MySQL在一个查询中有两个LAST_INSERT_ID

时间:2018-02-27 13:57:07

标签: mysql

我有3张桌子:

Words { wordId, name }
WordGroups { wordGroupId, type}
WordSets { wordSetId, wordId, wordGroupId}

我需要插入新的Word和新的WordGroup,然后插入WordSet并添加2个新的ID(wordId和WordGroupId)。

我做到了:

INSERT INTO `wordgroups`(`type`) VALUES ('some_type'); 
SET @gid:=LAST_INSERT_ID();
INSERT INTO `words`(`name`) VALUES ('test name');
SET @wid:=LAST_INSERT_ID();
INSERT INTO `wordsets`(`wordGroupId`,`wordId`) VALUES(@gid,@wid);

它有效,但我怀疑这是最好的方法。

有没有人有关于更好解决方案的建议?

2 个答案:

答案 0 :(得分:1)

在我看来,您的代码很好,我之前已经尝试过,并且没有遇到任何冲突或错误。这是最好的做法。

保持良好的工作!

答案 1 :(得分:1)

是的,这是最好的解决方案。只需在事务中确保此代码,以便任何事情的失败都会推出其他代码。