我不确定标题是否能很好地解释,但我相信我的解释会更好地解释它:
我有一个名为Tracks
的表和一个名为Flocks
的表。
每个跟踪都包含许多 Flocks 。
因此,当我插入一个新轨道时,会使用AUTO_INCREMENT
函数创建一个新ID,并且在同一个查询中,我想插入轨道的flocks,但为了使这些flocks属于跟踪我刚插入,我必须将他们的track_id
设置为自动递增的值。
我可以在3个查询中执行此操作,插入Track,获取递增的ID,然后插入所有具有ID的flocks。
但我想在一个查询中执行此操作,这可能吗?
答案 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");