从我读过的LAST_INSERT_ID()
中检索要运行的最后一个insert语句的id。如果最后一个insert语句在您的连接上运行,或者最后一个insert在数据库上运行所有连接?我想我要问的是:在繁忙的数据库驱动的网站上,以下代码返回错误ID的可能性有多大,是否有一种方法可以防止其他代码锁定数据库?
INSERT INTO example (string) VALUE ('something');
SELECT LAST_INSERT_ID();
PHP的mysql_insert_id()
是一个更好的解决方案,还是我应该只查询刚插入的数据并以这种方式获取ID?
答案 0 :(得分:12)
这是您的连接上运行的最后一个插入语句还是......
连接上的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,而无需关心其他客户端的活动,也无需锁定或事务。