[英]LAST_INSERT_ID after restarting MySQL
我尝试在插入新记录后通过以下语句检索LAST_INSERT_ID
,它工作正常。
SELECT LAST_INSERT_ID();
问题
在表中插入新记录并重新启动MySQL Server,然后尝试检索LAST_INSERT_ID
,它的值为0
!
LAST_INSERT_ID
仅在重新启动MySQL或重新启动系统之前有效吗?
任何帮助,将不胜感激。
如MySQL文档所述 ,
生成的ID在每个连接的服务器中维护。 这意味着函数返回给定客户端的值是为该客户端影响AUTO_INCREMENT列的最新语句生成的第一个AUTO_INCREMENT值。 此值不受其他客户端的影响,即使它们生成自己的AUTO_INCREMENT值。 此行为可确保每个客户端都可以检索自己的ID,而无需关心其他客户端的活动,也无需锁定或事务。
这意味着 - 在重新启动您的语句集后,没有任何语句影响AUTO_INCREMENT值,因此该值未定义。
请参见LAST_INSERT_ID
手册页中的以下文本:
The ID that was generated is maintained in the server on a per-connection basis.
如果你重新启动服务器,或断开并重新连接againg,那么你没有使用与插入时相同的连接,这就是你得到0
的原因
正如已经根据MySQL参考手册所述 : function_last-insert-id :
生成的ID在每个连接的服务器中维护。 这意味着函数返回给定客户端的值是为该客户端影响AUTO_INCREMENT列的最新语句生成的第一个AUTO_INCREMENT值。
要获得所需内容,只需创建一个新查询:
SELECT MAX(ID) FROM ExampleTable;
以防您无法按预期方式使用LAST_INSERT_ID 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.