Mysql通过自动增量插入主表,并将其他表中的链接数据插入到插入的main中

时间:2017-02-27 12:16:06

标签: mysql

我不确定标题是否能很好地解释,但我相信我的解释会更好地解释它:

我有一个名为Tracks的表和一个名为Flocks的表。 每个跟踪都包含许多 Flocks

因此,当我插入一个新轨道时,会使用AUTO_INCREMENT函数创建一个新ID,并且在同一个查询中,我想插入轨道的flocks,但为了使这些flocks属于跟踪我刚插入,我必须将他们的track_id设置为自动递增的值。

我可以在3个查询中执行此操作,插入Track,获取递增的ID,然后插入所有具有ID的flocks。

但我想在一个查询中执行此操作,这可能吗?

1 个答案:

答案 0 :(得分:0)

除非您使用触发器或存储过程,否则至少需要两个查询:

  • 插入曲目

  • 使用last_insert_id()作为插入flocks的外键值

示例:

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");