考虑我有两个表, t1 和 t2
t1 =(id,name),t2 =(id,fid)
t2中的 fid 是 t1 的外键。
按以下步骤创建行。
我的问题是:
由于t1的id在事务未提交时是未知的,所以如何执行插入到t2?
答案 0 :(得分:3)
如果id在table1中自动递增,那么你可以这样做:
INSERT INTO t1 (name) VALUES ('whatever');
INSERT INTO t2 (fid) VALUES (LAST_INSERT_ID());
编辑:如果我插入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);
...