Yes, there is no problem with mySql. 'select LAST_INSERT_ID()' is 'connection-aware', so you will always obtain YOUR last autoincrement value, regardless of other users' activities.
I am using it with success (remarkably, after 4 hours of learning iBatis), like in this example: <insert id="insertArtist" parameterClass="dto.Artist"> insert into artists (name) values (#name#) <selectKey resultClass="int"> select LAST_INSERT_ID() AS id </selectKey> </insert> dto.Artist is just a bean with id (int) & name (String). NOTE: The '<selectKey>' part must be placed AFTER the insert! Regards, Jaime -----Ursprüngliche Nachricht----- Von: Larry Meadors [mailto:[EMAIL PROTECTED] Gesendet: Donnerstag, 18. August 2005 14:11 An: user-java@ibatis.apache.org Betreff: Re: Getting auto-generated keys in mySql I believe that this method is "connection-aware" - so it returns the last id generated by this connection. On a related note, @@IDENTITY is not always safe in M$SQL, either. :-) If you have an insert that has a trigger that does another insert, it returns the second inserted key. The SCOPE_IDENTITY() database function does what you want in either case... Larry On 8/17/05, Alan Hicks <[EMAIL PROTECTED]> wrote: > > Was not aware of this Larry -Thanks. Will try your solution. > Just a thought. If you do use 'SELECT LAST_INSERT_ID()' and > two tables have been auto-incremented which ID does it return? > > Alan. > > "Learn something NEW everyday" > > > On Wed, 17 Aug 2005 22:46:19 +0100, Larry Meadors > <[EMAIL PROTECTED]> wrote: > > > NO! That is really, really not thread safe! > > > > Imagine what happens when 2 ppl do inserts at the same time... > > > > [insert #1][insert #2][query #1][query #2] > > > > Both [query #1] and [query #2] return the same id. > > > > Ooops! kaboom! > > > > Larry > > > > > > On 8/17/05, Alan Hicks <[EMAIL PROTECTED]> wrote: > >> Hi Brian, > >> > >> I had the same problem and could not find any working examples. Finally > >> I > >> stumbled upon > >> the query where 'userId' is an auto-generated key in my mysql table. If > >> you replace the > >> query you have with this one you should be in business. > >> > >> > >> SELECT MAX(userId) FROM tb_user > >> > >> > >> Hope this helps. > >> > >> Alan. > >> > >> > >> > >> On Wed, 17 Aug 2005 21:43:05 +0100, Barnett, Brian W. > >> <[EMAIL PROTECTED]> wrote: > >> > >> > We've been using SQL Server and are moving to mySQL. Can somebody > >> tell me > >> > how to do this for mySql: > >> > > >> > <selectKey resultClass="int" keyProperty="id"> > >> > SELECT @@IDENTITY AS id > >> > </selectKey> > >> > > >> > TIA, > >> > Brian Barnett > >> > > >> > > >> **************************************************************************** > >> > This email may contain confidential material. > >> > If you were not an intended recipient, > >> > Please notify the sender and delete all copies. > >> > We may monitor email to and from our network. > >> > > >> **************************************************************************** > >> > > >> > > >> > > >> > >> > >> > >> -- > >> Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ > >> > > > > > > -- > Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ >