13

从我读过的内容LAST_INSERT_ID()中检索要运行的最后一个插入语句的 id。如果最后一个插入语句在您的连接上运行,或者最后一个插入在数据库上运行所有连接?我想我想问的是:在一个繁忙的数据库驱动的网站上,以下代码返回错误 ID 的可能性有多大,有没有一种方法可以防止这种情况发生,然后锁定数据库?

INSERT INTO example (string) VALUE ('something');
SELECT LAST_INSERT_ID();

PHP会mysql_insert_id()是一个更好的解决方案,还是我应该只查询刚刚插入的数据并以这种方式获取ID?

4

1 回答 1

11

是在您的连接上运行的最后一个插入语句还是...

连接上的 last_insert。

PHP 的 mysql_insert_id() 会是更好的解决方案吗

不,是一样的。

还是我应该只查询刚刚插入的数据并以这种方式获取 id?

这样慢很多

链接:http ://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id

从该链接引用:

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

于 2011-05-06T22:59:09.103 回答