使用MySQL / InnoDB一致地在2个表中创建2条记录

时间:2010-07-21 16:40:07

标签: mysql innodb

考虑我有两个表, t1 t2

  

t1 =(id,name),t2 =(id,fid)

t2中的 fid t1 的外键。

按以下步骤创建行。

  1. 在t1中插入一行,获取ID
  2. 使用该ID并在t2中插入为fid。
  3. 我的问题是:

    由于t1的id在事务未提交时是未知的,所以如何执行插入到t2?

1 个答案:

答案 0 :(得分:3)

如果id在table1中自动递增,那么你可以这样做:

INSERT INTO t1 (name) VALUES ('whatever');
INSERT INTO t2 (fid) VALUES (LAST_INSERT_ID());

这来自MySQL Reference Manual

编辑:如果我插入3个表t1,t2,t3怎么样t2和t3都有一个等于t1的fid。但是当t3插入fid时,LAST_INSERT_ID()属于t2,而不属于t1。

然后你可以这样做:

INSERT INTO t1 (name) VALUES ('whatever');
SET @id=LAST_INSERT_ID();
INSERT INTO t2 (fid) VALUES (@id);
INSERT INTO t3 (fid) VALUES (@id);
...