[ 
https://issues.apache.org/jira/browse/DERBY-6779?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14241825#comment-14241825
 ] 

Myrna van Lunteren commented on DERBY-6779:
-------------------------------------------

There was a discussion about this issue on the user and dev lists which may 
contain further useful or background information:
user list: 
http://apache-database.10148.n7.nabble.com/Duplicate-key-feature-request-tt143327.html
dev spin off: 
http://apache-database.10148.n7.nabble.com/Fwd-Duplicate-key-feature-request-tt143371.html

> 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: JDBC, 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) {    // or some other suitable name
>         // ... 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)

Reply via email to