Can somebody explain how works MySQL function LAST_INSERT_ID(). I'm trying to get id of last inserted row in database, but every time get 1.
I use mybatis.
Example query is :
<insert id="insertInto" parameterType="Something" timeout="0">
INSERT INTO something (something) VALUES (#{something})
<selectKey resultType="int">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
Code:
System.out.println("Id : " + id)
Output:
Id : 1
LAST_INSERT_ID returns the last value implicitly inserted into an AUTO_INCREMENT column in the current session.
CREATE TABLE mytable (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, value INT NOT NULL);
To make the column autoincrement, you should omit it from the INSERT list:
INSERT
INTO mytable (value)
VALUES (1)
or provide it with a NULL value:
INSERT
INTO mytable (id, value)
VALUES (NULL, 1)
After that,
SELECT LAST_INSERT_ID()
will return you the value AUTO_INCREMENT has inserted into the id column.
This will not work if:
AUTO_INCREMENT columnLAST_INSERT_ID in another sessionLAST_INSERT_ID() will return the value of the first row inserted, not the last one).LAST_INSERT_ID()
is per user and per connection.
You can read more in MySQL doc.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With