有人可以解释一下 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>
Code:
System.out.println("Id : " + id)
Output:
Id : 1
LAST_INSERT_ID
返回最后一个值隐含地插入到AUTO_INCREMENT
当前会话中的列。
CREATE TABLE mytable (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, value INT NOT NULL);
要使列自动递增,您应该从INSERT
list:
INSERT
INTO mytable (value)
VALUES (1)
或为其提供一个NULL
value:
INSERT
INTO mytable (id, value)
VALUES (NULL, 1)
在那之后,
SELECT LAST_INSERT_ID()
将返回您的值AUTO_INCREMENT
已插入到id
column.
如果出现以下情况,这将不起作用:
- 您为
AUTO_INCREMENT
column
- 你打电话
LAST_INSERT_ID
在另一个会话中
- 您在同一语句中插入多行(
LAST_INSERT_ID()
将返回插入的第一行的值,而不是最后一行的值)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)