I am not really sure I understand fully what selectKey is trying to do.
My situation is this.
I have a postgres table "PERSONS" with a primary key of ID which is of type
SERIAL. In Postgres this means an automatic creation of a SEQUENCE, and a
default value in the column of nextval('persons_id_seq')
I want to create the transaction to insert a new person into the PERSONS
table, but I need to know the ID that it has been created with, so that I can
use that.
There are two options (I think) from a SQL point of view
1) Within a single transaction
SELECT nextval('persons_id_seq')
- which will output a single value - and which I can pick up in a resultclass
of int using iBatis, then
INSERT INTO persons (id , ...) values (#id#,...) where id is the value
returned in the int
2) Within a single transaction
INSERT INTO persons (data but no the id)
SELECT curval('persons_id_seq')
and use the value returned from select statement as the ID of the inserted
row.
Where does selectKey fit into this - does it perfom the attached select with
the insert automatically within the same transaction without manually needed
to define the transaction boundaries? What else does it do?
How to I get back the ID from the API when I call the SqlMap.insert routine.
--
Alan Chandler
http://www.chandlerfamily.org.uk