7

在高流量应用程序中,是否有可能mysqli_insert_id()返回错误的 id,或者混淆INSERT几乎同时执行的两个查询之间的 id?

4

4 回答 4

11

No.mysqli_insert_id返回当前连接上AUTO_INCREMENT最近一次查询的最大值。INSERT例如,它永远不会与另一个连接混淆。

于 2012-02-16T16:39:57.383 回答
4

不,我怎么能这么肯定?因为它会在很久以前被报告和修复。

于 2012-02-16T16:41:06.790 回答
3

引用之前对这个完全相同的问题的回答:

查看http://dev.mysql.com/doc/refman/5.6/en/getting-unique-id.html了解更多信息,它说:

“对于 LAST_INSERT_ID(),最近生成的 ID 在每个连接的基础上维护在服务器中。它不会被另一个客户端更改。如果您使用非魔术值更新另一个 AUTO_INCREMENT 列,它甚至不会更改(即,一个非 NULL 且非 0 的值)。从多个客户端同时使用 LAST_INSERT_ID() 和 AUTO_INCREMENT 列是完全有效的。每个客户端将收到客户端执行的最后一条语句的最后插入 ID。

所以你应该可以做你想做的事,你不应该得到奇怪的结果。

于 2012-02-16T16:50:38.237 回答
2

是的,这是可能的!如果您有多个表要插入相同的连接并且您的最后一个插入不正确(就像我尝试在文本中插入未转义的引号)。

我认为它返回最后一个成功的插入 id,它可以来自不同的表。我花了一个小时才找到这个。和平

于 2018-03-29T14:07:23.840 回答