2017-02-27 57 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

相关问题