0
考慮我有兩個表,T1和T2創建2條
T1 =(ID,姓名),T2 =(ID,FID)
在t2中的fid是t1的外鍵。
創建行的步驟如下。
- 插入一行在T1,獲得ID
- 使用該ID和插入T2爲FID。
我的問題是:
由於T1的id是不明當事務沒有提交,因此如何執行插入到t2?
考慮我有兩個表,T1和T2創建2條
T1 =(ID,姓名),T2 =(ID,FID)
在t2中的fid是t1的外鍵。
創建行的步驟如下。
我的問題是:
由於T1的id是不明當事務沒有提交,因此如何執行插入到t2?
如果ID是自動遞增table1中,那麼你可以做這樣的事情:
INSERT INTO t1 (name) VALUES ('whatever');
INSERT INTO t2 (fid) VALUES (LAST_INSERT_ID());
編輯:如果我插入3個表t1,t2,t3如何?t2和t3都有一個fid等於t1。但是當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);
...
事實上,在T1新的ID ** **是已知的。在一個併發的其他事務中(可能還有一個回滾或提交),id的順序可能會有差距,這應該不重要。 – Wrikken 2010-07-21 16:49:19
如果我插入3個表格 t1,t2,t3 t2和t3的fid都等於t1。 但是當t3插入fid時,LAST_INSERT_ID()屬於t2,而不是t1。 – Ryan 2010-07-22 13:51:47
我已編輯我的帖子來回答這個不同的問題。您只需保存'LAST_INSERT_ID()'的值,然後在需要時檢索它。 – KLee1 2010-07-22 15:55:38