MySQL replace into 和获取最后插入ID

6
在MySQL中,使用REPLACE INTO查询是否能与LAST_INSERT_ID函数一起使用?
基本上,我需要插入到一个表中,只有在该记录不存在时才插入,但无论如何都要插入到具有第一个表外键约束的第二个表中。
例如:
REPLACE INTO TABLE1(NAME) VALUES('unique');
SET @table1_id = LAST_INSERT_ID();
INSERT INTO TABLE2(TABLE1_ID, VALUE) VALUES(@table1_id, 'Test Value');

这个函数在插入和更新时都能正常工作吗?
1个回答

4

是的,REPLACE INTO查询会影响LAST_INSERT_ID()函数的结果。

文档中说明:

REPLACEINSERT 的工作方式完全相同,只不过如果表中的旧行与主键或唯一索引的新行具有相同的值,则在插入新行之前删除旧行。

这意味着如果INSERT会影响LAST_INSERT_ID(),那么REPLACE也会影响。

我已经使用MySQL 8进行了测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接