因此,我想将两个表与一个公共列"messageID“链接起来。因此,首先我插入表1以获得自动递增的id,然后将带有LAST_INSERT_ID函数的ID作为表2的id:
$db->("INSERT INTO table_1 VALUES('','$message')");
$db->("INSERT INTO table_2 VALUES(LAST_INSERT_ID(),'$message');但是我担心的是,可能有两个用户同时运行这个脚本,所以在两个查询之间的几毫秒内,LAST_INSERT_ID可能已经改变了,所以现在这两个id是不同的。我有没有办法阻止这种可能性。我知道不可能用一个查询将两个表插入,这是我的第一想法。任何想法都很受欢迎。谢谢
发布于 2013-10-16 19:33:16
LAST_INSERT_ID是连接会话的本地用户,因此它不会与进行插入的其他用户发生冲突。
发布于 2013-10-16 19:43:48
您可以尝试使用scope_identity,如下所示:
$db->("DECLARE @LAST_ID int
INSERT INTO table_1 VALUES('','$message')"
SET @LAST_ID = SCOPE_IDENTITY()
);
$arg = ... $myARR['LAST_ID'] ... //however you want to get the LAST_ID from your query to PHP here
$db->("INSERT INTO table_2 VALUES(@arg,'$message');或
$db->("DECLARE @LAST_ID int
INSERT INTO table_1 VALUES('','$message')"
SET @LAST_ID = SCOPE_IDENTITY()
INSERT INTO table_2 VALUES(@LAST_ID,'$message')
);LAST_ID将是自动递增id的值。
https://stackoverflow.com/questions/19412130
复制相似问题