繁体   English   中英

重新启动MySQL后的LAST_INSERT_ID

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM