求问 Mysql 中 last_insert_id()语句的使用?

2016-11-08 16:55:06 +08:00
 zjx14250

一开始建个数据库 MariaDB [test]> create table auto( -> i smallint not null auto_increment, -> name varchar(10), -> primary key(i) -> ) -> ; Query OK, 0 rows affected (0.02 sec)

然后执行一条插入语句 MariaDB [test]> insert into auto values(1,'1'),(0,'2'),(null,'3'); Query OK, 3 rows affected (0.00 sec) 此时执行 last_insert_id ()结果为 1 再执行一条语句 MariaDB [test]> insert into auto values(4,'4'); Query OK, 1 row affected (0.00 sec) 此时执行 last_insert_id ()结果为 2 再执行一条语句 MariaDB [test]> insert into auto values(5,'104'); 此时执行 last_insert_id ()结果还是为 2

求问为什么没有变??

3021 次点击
所在节点    MySQL
7 条回复
MajorAdam
2016-11-08 17:09:30 +08:00
第二次应该返回 4 吧
MajorAdam
2016-11-08 17:11:07 +08:00
只有自增字段由 mysql 来分配时, last_insert_id()才可能得到正确的值
MajorAdam
2016-11-08 17:11:24 +08:00
problem solved
fupenghao
2016-11-09 11:19:25 +08:00
并没解决。。。。第二次返回的是 2
fupenghao
2016-11-09 11:19:32 +08:00
MajorAdam
2016-11-09 14:08:52 +08:00
@fupenghao 你的自增 id 是自己赋值的 4,不是 mysql 自动生成的 4,只有自增字段由 mysql 来分配时,last_insert_id()才可能得到正确的值
MajorAdam
2016-11-09 14:13:53 +08:00
"然后执行一条插入语句 MariaDB [test]> insert into auto values(1,'1'),(0,'2'),(null,'3'); Query OK, 3 rows affected (0.00 sec) 此时执行 last_insert_id ()结果为 1" 这是不可能的,此时应为 2

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/319031

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX