曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4077|回复: 0
打印 上一主题 下一主题

[函数] LAST_INSERT_ID()

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2012-4-26 00:05:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
LAST_INSERT_ID()  函数(不带参数) 返回一个 BIGINT (64 位) 位值,该值是最近一次执行 INSERT 操作到被设置为 AUTO_INCREMENT 的列所自动产生的值。下面做一个试验说明:

有这么一个表:
mysql> desc books;

它表示的是所售图书的相关信息。注意,上面的 book_id 是被设为 AUTO_INCREMENT 类型的。

假设 books 表中已经有了 1 条图书数据记录:
mysql> SELECT * from books;


现在手动添加 1 条记录到该表中:
mysql> INSERT INTO books (book_id, title, author_id, publisher_id, pub_year, isbn) VALUES (10, 'X-Files', 2, '313842938', 'GNet', '2011');
Query OK, 1 row affected (0.66 sec)
注意,上面手动设置了 book_id 的值为 10 。
mysql> select book_id from books;


然后再调用一下 LAST_INSERT_ID() 这个函数:
mysql> SELECT LAST_INSERT_ID();

这里得到的值为 2 ,并不是 10。这是因为,10 这个值是我们手动设置的,而不是 AUTO_INCREMENT 自动增加的,因此 LAST_INSERT_ID() 函数不能返回 10 。为 2 的原因是之前曾经操作了另外一个表,而该表中也有一个 AUTO_INCREMENT 的字段,且操作之前的值为 1 ,在为该表中添加了数据后其值自动增加 1 。

现在再手动添加一条数据到 books 表,这次不再设置 book_id 这个字段了:
mysql> INSERT INTO books (title, author_id, publisher_id, pub_year, isbn) VALUES ('Love', 2, '32311312', 'GNet', '2010');
Query OK, 1 row affected (0.68 sec)
mysql> SELECT LAST_INSERT_ID();

由上图看到,执行函数的结果的返回值是 11, 可以使用下面的语句查看 book_id 是不是也变成了 11 :
mysql> select book_id from books;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-3 23:25 , Processed in 0.060953 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表