LAST_INSERT_ID()它在多用户环境中的工作原理

时间:2011-04-29 18:09:36

标签: php mysql

首先检查问题:
Inserting an automatically generated index from a table into another table
我得到了这个函数“LAST_INSERT_ID()”做了必要的 问题是:我在php脚本中使用它,如果某个用户在“table1”中插入数据并且在将“id”插入“table2”之前,另一个用户将数据插入“table1”...那么“ id“函数将为第一个用户检索,他的id或第二个用户的id”是最后一个用户“?? 我想检索用户自己“第一个用户”插入的“id”,所以如果没有实现那个怎么办?

2 个答案:

答案 0 :(得分:26)

LAST_INSERT_ID()为您提供执行它的连接上的最后一个自动生成的ID,它不会返回MySQL服务器全局生成的最后一个插入ID。

答案 1 :(得分:-1)

永远不要在PostgreSQL序列中使用lastInsertId(),特别是在应用程序的插入/更新负载很高时。 PostgreSQL序列是非事务性的(一种自然的设计特性,以避免独占锁定,否则会产生不可接受的性能)。这意味着递增相同序列的任何并发事务将使lastInsertId()返回的值相对于事务的最后一个插入无效。例如:

Transaction 1 inserts with nextval('some_seq') yielding 100;
Concurrent transaction 2 inserts with nextval('some_seq') yielding 101;
Transaction 1 calls lastInsertId(), expecting 100, BUT GETS 101.

这个PDO方法是PostgreSQL的头脑,总是使用INSERT ... RETURNING。问候。

Source