Mysql插入自增主表并将其他表中的数据链接到插入的主表

标签 mysql

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

我有一个名为 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/

相关文章:

MySQL 使用内连接语法从两个表中检索数据

php - Cakephp HABTM 需要多个连接

mysql - 无法启动 SSH 隧道管理器 mysql workbench Ubuntu

php - 警告 : mysql_fetch_array()

MySQL:使用列表中的随机数更新所有行

PHP - 在 PHP 中比较分解的单词与 mysql varchar

python - Django自定义注册: how to set a default password and use first name + last name as username

mysql 慢速查询获取帖子和标签

MySQL - ROUND() 是否使用索引?

mysql - REPLACE INTO sql 查询有 2 个键?