Call the getErrorCode() method on the exception.  This will be -803 for duplicate keys on DB2.
 
Jeff Butler

 
On 9/15/06, Edwin Lukaweski <[EMAIL PROTECTED]> wrote:
Great!
 
    Now....I guess when the insert fails, via iBatis and an SQL_Map, I will get an SQLExceptiion. Is there an easy way to find the -803?
 
    I want to intercept it and re-throw only non 803 exceptions.
 
thanks,
Edwin
 
----- Original Message -----
Sent: Friday, September 15, 2006 12:08 PM
Subject: Re: finding unique keys

 
I just looked to see how Spring does it with DB2.  They do look for -803 as the error code from the SqlException.  So I think your plan sounds good.
 
Jeff Butler


 
On 9/15/06, Edwin Lukaweski <[EMAIL PROTECTED] > wrote:
Thanks for all the feed back!!!

Some answers:

   1) I am using DB2 for z/OS version 7

   2) Yes, UUID's are by definition 'universally unique', excpept whe two
are gengerated, say by two different JVMs,  within the same millisecond.
The, they turn out to be duplicates.

   3) I like the idea of doing an optimistic INSERT. I have always had
trouble figuring which sql code to look for that represents this situation.
As best I can tell, it is SQLCODE 803. So, if I see this code in an
exception, loop again, otherwise throw a real sqlexception.

What do you think?

thanks,
Edwin

----- Original Message -----
From: "Larry Meadors" < [EMAIL PROTECTED]>
To: < [email protected]>
Sent: Friday, September 15, 2006 11:03 AM
Subject: Re: finding unique keys


> +1 ;-)
>
> Larry
>
>
> On 9/15/06, Jeff Butler < [EMAIL PROTECTED]> wrote:
>>
>> Some thoughts...
>>
>> 1. Aren't UUID's "universally unique" by definition?  Are you sure you
>> need
>> to do this?
>>
>> 2. Table locking is almost always a bad idea.  I had a similar situation
>> to
>> yours in that past, and decided to take the optomistic route, meaning...
>>
>> - generate the key
>> - insert the record
>> - if the insert blows because of a duplicate key, then generate a new key
>> and try again
>>
>> Since the likelihood of generating a duplicate UUID should be very low,
>> this
>> approcah will work in the vast majority of cases.
>>
>>
>> Jeff Butler
>>
>>
>>
>>
>> On 9/15/06, Edwin Lukaweski < [EMAIL PROTECTED]> wrote:
>> > Thanks for the answer.
>> >
>> >    I am stuck with an existing table definition, in a schema, that I
>> cannot
>> > modify at this point due to being in production.
>> >
>> >    So, this is the best method I can come up with.
>> >
>> >    also....now you have tweaked my curiosity. In addition to the advice
>> > I
>> > am seeking, it I could alter the table definition to use some form of
>> > auto-increment, how would I retrieve the generated value in iBatis?
>> >
>> >    So.....I now have two questions.
>> >
>> > thanks,
>> > Ediwn
>> >
>> > ----- Original Message -----
>> > From: "Larry Meadors" < [EMAIL PROTECTED]>
>> > To: < [email protected]>
>> > Sent: Friday, September 15, 2006 10:14 AM
>> > Subject: Re: finding unique keys
>> >
>> >
>> > > One question: Why not just let the database do it and have it tell
>> > > you
>> > > the generated key?
>> > >
>> > > Larry
>> > >
>> > >
>> > > On 9/15/06, Edwin Lukaweski < [EMAIL PROTECTED]> wrote:
>> > >>
>> > >>
>> > >> Hi:
>> > >>
>> > >>     I have a situation for which I need some advice while using
>> > >> iBatis.
>> > >>
>> > >>     What I would like to do is:
>> > >>
>> > >>     1) generate a unique UUID style value in my Java program
>> > >>
>> > >>     2) lock a table, say tabxx
>> > >>
>> > >>     3) SELECT on the table to see if the UUID exists as a key
>> > >>
>> > >>     4) if so, add 1 to the key and go to step 3
>> > >>
>> > >>     5) if the key does NOT exist, insert the record
>> > >>
>> > >>     6) unlock the table
>> > >>
>> > >>     Can anyone get me advice as to how to do this with iBatis?
>> > >>
>> > >> Thanks, very musch, in advance
>> > >>
>> > >> Edwin
>> > >>
>> > >
>> >
>> >
>> >
>>
>>
>




Reply via email to