2017-02-27 56 views
0

我不知道如果標題解釋得很好,但我相信我的解釋會更好地解釋它:Mysql的插入到主表自動遞增和鏈接數據的其他表中插入主

我有稱爲Tracks的表格和稱爲Flocks的tble。 每個田徑有很多羊羣在它。

所以,當我插入一個新的軌道,一個新的ID與AUTO_INCREMENT函數創建,並在同一個查詢中,我想插入軌道的羊羣,但爲了使這些羊羣屬於軌道我只是插入,我必須將它們的track_id設置爲自動遞增值。

我可以在3個查詢中做到這一點,插入Track,獲取遞增的ID,然後插入所有具有ID的羣。

但我想在一個查詢中做到這一點,這可能嗎?

+0

使用觸發器來做到這一點 – denny

回答

0

,除非你去觸發器或存儲過程至少需要兩個查詢:

  • 插入軌道

  • 使用last_insert_id()作爲外鍵值插入到成羣

例如:
insert into track (name) values ('Trackname'); 

insert info flocks (trackid) select last_insert_id(); 

我通常組這樣的任務,一起在一個存儲過程:

create procedure createTrack (p_trackname varchar(20)) as 
begin 
    insert into track (name) values (p_trackname); 

    insert info flocks (trackid) select last_insert_id(); 
end; 

然後調用它是這樣的:

call createTrack("Trackname"); 
+1

選擇LAST_INSERT_ID()是一個MySQL的功能? –

+0

是。並返回會話中生成的最後插入的auto_increment值 – Psi

相關問題