ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kris Jenkins <krisajenk...@yahoo.co.uk>
Subject Re: Duplicate Key in Db
Date Wed, 23 Feb 2005 17:48:16 GMT
I'll get my coat...

:-[

>"The module code is a primary key and must be a unique value, though
>it must match with a value stored in another system so can not be an
>auto-increment value."
>
>I don't think his situation would allow for that.
>
>Brandon
>
>  
>
>>I'd want to design it so that the database assigns the primary keys.
>>It's the best way to do it IMHO.  Any object to be persisted is checked
>>for a primary key.  If it's null, you do an insert; if it's not null,
>>you want an update.  The database assigns primary keys and can use a
>>sequence to guarantee uniqueness.  Then you can use the <selectKey>
>>element in SqlMap* to assign the sequence number back into the object.
>>This way you avoid the whole problem.
>>
>>HTH,
>>Kris
>>
>>* See the dev guide for details.
>>
>>
>>Tim Christopher wrote:
>>
>>    
>>
>>>Sorry, I should have mentioned that I was talking about an
>>>insertion...  Currently it is possible for a user to create a new
>>>Module by specifying a module code, name, etc..  The module code is a
>>>primary key and must be a unique value, though it must match with a
>>>value stored in another system so can not be an auto-increment value.
>>>
>>>Is there any way to prevent a user from creating two modules with the
>>>same Id, other than doing a select statement first to see if it will
>>>break any database rules.  Doing it that way would mean any change to
>>>the database structure such as the removal of a primary keep will
>>>require an update to my Java classes.
>>>
>>>I was hoping there is a way for iBATIS catch the error and return
>>>something to let the user know their attempted insertion was invalid
>>>and was not completed.
>>>
>>>Tim Christopher
>>>
>>>
>>>On Wed, 23 Feb 2005 08:38:38 -0700, Brandon Goodin
>>><brandon.goodin@gmail.com> wrote:
>>>
>>>
>>>      
>>>
>>>>you should not specify your primary key in the update values of your
>>>>update statement. It should be part of your where criteria.
>>>>
>>>>BAD:
>>>>UPDATE SOMETABLE
>>>>(somePrimaryKey,columnA,columnB,columnC)
>>>>VALUES(#somePrimaryKey#,#'valueA#,#valueB#,#valueC#)
>>>>WHERE somePrimaryKey = 1
>>>>
>>>>GOOD:
>>>>UPDATE SOMETABLE
>>>>(columnA,columnB,columnC)
>>>>VALUES(#valueA#,#valueB#,#valueC#)
>>>>WHERE somePrimaryKey =  #somePrimaryKey#
>>>>
>>>>Brandon
>>>>
>>>>On Wed, 23 Feb 2005 12:00:34 +0000, Tim Christopher
>>>><tim.christopher@gmail.com> wrote:
>>>>
>>>>
>>>>        
>>>>
>>>>>Hi,
>>>>>
>>>>>Apologies is this question is trivial for the group but I'm very new
>>>>>to using iBATIS.
>>>>>
>>>>>I've managed to successfully integrate iBATIS into my Struts
>>>>>application, using a structure much like the sample JPetStore project
>>>>>- this acted as my tutorial.
>>>>>
>>>>>Can someone let me know if it is possible for iBATIS to deal with
>>>>>problems such as an update containing a primary key which is the same
>>>>>as on already in the table?
>>>>>
>>>>>I tested this out this morning on got a huge stack trace (summarised
>>>>>below), so I'm guessing it isn't done by default.
>>>>>
>>>>>
>>>>>
>>>>>Cause: com.borland.datastore.driver.SqlState: Runtime Error: [line 1,
>>>>>col 6] Duplicate key value for $UNIQUE$1 sort order in "MODULE".
>>>>><<<<
>>>>>
>>>>>Any advice or even just a link would be much appreciated.
>>>>>
>>>>>Regards,
>>>>>
>>>>>Tim Christopher
>>>>>
>>>>>
>>>>>
>>>>>          
>>>>>
>>>
>>>      
>>>
>>--
>>Kris Jenkins
>>Email:  kris@jenkster.com
>>Blog:   http://cafe.jenkster.com/
>>Wiki:   http://wiki.jenkster.com/
>>
>>
>>    
>>
>
>  
>


-- 
Kris Jenkins
Email:  kris@jenkster.com
Blog:   http://cafe.jenkster.com/
Wiki:   http://wiki.jenkster.com/



Mime
View raw message