|
LAST_INSERT_ID() 函数(不带参数) 返回一个 BIGINT (64 位) 位值,该值是最近一次执行 INSERT 操作到被设置为 AUTO_INCREMENT 的列所自动产生的值。下面做一个试验说明:
有这么一个表:
它表示的是所售图书的相关信息。注意,上面的 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
|