Sta*_*aba 6 java mysql sql mybatis last-insert-id
有人可以解释MySQL函数LAST_INSERT_ID()的工作原理.我想在数据库中获取最后一行插入的id,但每次都得到1.
我用mybatis.
示例查询是:
<insert id="insertInto" parameterType="Something" timeout="0">
INSERT INTO something (something) VALUES (#{something})
<selectKey resultType="int">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
Run Code Online (Sandbox Code Playgroud)
码:
System.out.println("Id : " + id)
Run Code Online (Sandbox Code Playgroud)
输出:
Id : 1
Run Code Online (Sandbox Code Playgroud)
LAST_INSERT_ID返回隐式插入AUTO_INCREMENT当前会话中的列的最后一个值.
CREATE TABLE mytable (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, value INT NOT NULL);
Run Code Online (Sandbox Code Playgroud)
要使列自动增量,您应该从INSERT列表中省略它:
INSERT
INTO mytable (value)
VALUES (1)
Run Code Online (Sandbox Code Playgroud)
或者提供一个NULL值:
INSERT
INTO mytable (id, value)
VALUES (NULL, 1)
Run Code Online (Sandbox Code Playgroud)
之后,
SELECT LAST_INSERT_ID()
Run Code Online (Sandbox Code Playgroud)
将返回AUTO_INCREMENT已插入id列的值.
如果符合以下条件,则无效
AUTO_INCREMENT列提供显式值LAST_INSERT_ID另一个会话LAST_INSERT_ID()将返回插入的第一行的值,而不是最后一行的值).