4

mysql_insert_id()在竞争条件下有多可靠?我的意思是当多个用户同时插入数据时,这个函数是返回真实ID还是返回其他用户插入的数据ID?

表引擎是 MyISAM。

4

2 回答 2

4

mysql_insert_id完全是多用户安全的。它完全依赖于数据库连接,每个连接只能有一个用户......所以,根据你的问题,它返回真正的 id....

MySql 文档中,

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

于 2012-08-12T08:45:07.400 回答
0

恕我直言,即使有多个用户插入..它也会在您的程序执行中按顺序执行。

来自php.net

“mysql_insert_id() 作用于最后执行的查询,确保在生成值的查询之后立即调用 mysql_insert_id()。”

不鼓励使用此扩展程序。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。另请参阅 MySQL:选择 API 指南和相关的常见问题解答以获取更多信息。此功能的替代方案包括:

mysqli_insert_id()
PDO::lastInsertId()

您也可以从 dev.mysql 检查此链接,其中指出

“mysql_insert_id() 的值仅受当前客户端连接内发出的语句影响。不受其他客户端发出的语句的影响。”

于 2012-08-12T08:50:33.187 回答