1

我做了一个在表中插入新行的函数,在将INSERT语句调用到 mysql 之后,我进行了一些检查,然后检查mysql_insert_id().

我想保持安静,因为在我得到mysql_insert_id().

我敢打赌,它应该是安全的,但我之所以这么问,是因为这可能是灾难性的。

4

2 回答 2

5

来自manual

生成的 ID 在每个连接的基础上维护在服务器中。这意味着函数返回给给定客户端的值是为影响该客户端的 AUTO_INCREMENT 列的最新语句生成的第一个 AUTO_INCREMENT 值。此值不受其他客户端的影响,即使它们生成自己的 AUTO_INCREMENT 值。这种行为确保每个客户端都可以检索自己的 ID,而不用担心其他客户端的活动,也不需要锁或事务。

因此,如果您的线程将使用单独的连接,它们将获得不同的插入 ID。

于 2014-08-26T11:58:37.833 回答
1

是的你可以。如果 mysql_insert_id() 可能会受到其他几乎同时命中同一 PHP 脚本的影响,那么它将毫无用处。

它在每个连接的基础上工作。

于 2014-08-26T11:57:41.420 回答