You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "John English (JIRA)" <ji...@apache.org> on 2014/12/10 15:53:12 UTC
[jira] [Created] (DERBY-6779) Provide subclass of SQLException for
duplicate key insertions
John English created DERBY-6779:
-----------------------------------
Summary: Provide subclass of SQLException for duplicate key insertions
Key: DERBY-6779
URL: https://issues.apache.org/jira/browse/DERBY-6779
Project: Derby
Issue Type: Improvement
Components: SQL
Reporter: John English
Priority: Minor
A commonly-occurring situation is to take some special action when an insert fails due to a duplicate key; for example, to update the existing row or to retry the insert with a new key (e.g. mutate "Name" into "Name(1)", "Name(2)" etc. until a unique key is found). At present this requires code similar to:
{noformat}
try {
//... insert new row
}
catch (SQLException e) {
if (e.getSQLState().equals(DUPLICATE_KEY)) {
// ... take recovery action
}
else {
throw e;
}
}
{noformat}
It would be more convenient if a subclass of SQLException were used to report this precise error. The SQLIntegrityConstraintViolationException that is currently thrown will also be thrown in other case where a constraint is violated. A new exception subclass for this specific situation would not affect any existing code, and would allow the code above to be simplified to this:
{noformat}
try {
//... insert new row
}
catch DuplicateKeyException e) {
// ... take recovery action
}
{noformat}
This would allow a more elegant, more O-O solution to what is, in my experience, a common use case without having to discriminate based on the value of getSQLState().
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)