我不确定标题是否很好地解释了它,但我确信我的解释会更好地解释它:
我有一个名为 Tracks
的表和一个名为 Flocks
的表。
每个跑道都有许多羊群。
因此,当我插入新轨道时,会使用 AUTO_INCRMENT
函数创建一个新 ID,并且在同一个查询中,我也想插入轨道的羊群,但为了使这些羊群属于我刚刚插入的轨道,我必须将其 track_id
设置为自动递增值。
我可以通过 3 个查询来完成此操作,插入 Track,获取递增的 ID,然后插入具有该 ID 的所有羊群。
但是我想在一个查询中完成此操作,这可能吗?
最佳答案
除非您使用触发器或存储过程,否则您至少需要两个查询:
插入轨道
使用
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");
关于Mysql插入自增主表并将其他表中的数据链接到插入的主表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42485617/