ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brandon Goodin <brandon.goo...@gmail.com>
Subject Re: Duplicate Key in Db
Date Wed, 23 Feb 2005 17:11:19 GMT
"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/
> 
>

Mime
View raw message