如何在MySQL中用两个FK将行插入表中?

时间:2019-01-24 16:26:49

标签: mysql sql insert

假设我们在MySQL中有3个表,如下所示:

  • 带有外键{T2.id_t2,T3.id_t3}的T1 {id_t1,id_t2,id_t3}
  • 带有主键{id_t2}的T2 {id_t2,foo,bar}
  • T3 {id_t3,baz}和主键{id_t3}

我想向T1,T2和T3插入新行,其中创建T1行需要创建T2和T3行。我无法使用3个INSERT查询来完成此操作,因为LAST_INSERT_ID()的值在创建一行后会发生变化。

但是我需要在T1行之前创建T2和T3行。

如何创建一个创建T3和T2行的管道,然后使用它们的PK创建一个T1行?

1 个答案:

答案 0 :(得分:4)

您可以使用变量捕获LAST_INSERT_ID

INSERT INTO T2 ... ;
SET @var2 := last_insert_id();
INSERT INTO T3 ... ;
SET @var3 := last_insert_id();

INSERT INTO T1 SET
id_t2 = @var2,
id_t3 = @var3
;