拥有:
1. create DB
2. create Table
3. insert 3 rows
4. select LAST_INSERT_ID()
这里的测试代码:
DROP DATABASE IF EXISTS TEST;
CREATE DATABASE TEST;
USE TEST;
CREATE TABLE test (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
age INT
);
INSERT INTO test (age) VALUES (1), (2), (3);
SELECT LAST_INSERT_ID();
为什么LAST_INSERT_ID()返回1? 例外:3
如何获取有效的LAST_INSERT_ID()?
答案 0 :(得分:2)
MySQL documentation清楚地解释了此行为:
不带任何参数,LAST_INSERT_ID()返回一个BIGINT UNSIGNED(64位)值,该值表示自动生成的 first (强调我的)自动生成的值,该值已成功插入AUTO_INCREMENT列,作为最近的结果执行INSERT语句。如果没有成功插入任何行,则LAST_INSERT_ID()的值将保持不变。
由自动递增序列在插入中生成的第一个值是1,而不是2或3,因此返回值1。
我认为您对LAST_INSERT_ID
的名字感到困惑。 “最后”部分是指最新的插入声明,而不是该插入中的最新id
值。