一个更可靠的LAST_INSERT_ID解决方案

use*_*429 0 php mysql

所以我想用一个公共列"messageID"链接两个表.所以首先我插入到表1中以获取自动递增的id,然后将该ID与LAST_INSERT_ID函数一起使用,并将其作为表2的id:

$db->("INSERT INTO table_1 VALUES('','$message')");
$db->("INSERT INTO table_2 VALUES(LAST_INSERT_ID(),'$message');
Run Code Online (Sandbox Code Playgroud)

但这是我的担心,可能有两个用户同时运行这个脚本,所以在两个查询之间的几毫秒内,exicuting LAST_INSERT_ID可能已经改变了,所以现在这两个id是不同的.有什么办法可以防止这种可能性.我知道用一个查询插入两个表是不可能的,这是我的第一个想法.任何想法都非常感激.谢谢

Gen*_* S. 6

LAST_INSERT_ID是连接会话的本地,因此它不会与插入的其他用户冲突.

  • 连接会话不是事务. (2认同)