MySQL:以原子方式同时插入 table 和相关的 table

MySQL: Atomically inserting into a table and into a related table simultaniously

我有两个 table,一个带有自动生成的主键的 TaskLists table 和一个 Tasks table。一个TaskList可以有多个Tasks.

我现在如何插入一个 TaskLists 行,同时自动将 none 插入多行到引用刚刚插入的对象的 Tasks table .

利用发生在AFTER INSERT

triggers
CREATE TRIGGER trigger_name
AFTER INSERT
   ON TaskList FOR EACH ROW

BEGIN

   -- Insert the rows to tasks now

   INSERT INTO tasks (TaskID) VALUES (NEW.TaskId);

   -- You can run several insert statements here
END;

如果您想使用 TaskList 中的值,请使用 NEW.columname

https://www.techonthenet.com/mysql/triggers/after_insert.php

根据广义相对论,这个宇宙中的任何事情都不会发生在 "same time",所以你不能。 :)

但是,您可以启动一个事务,将一行插入TaskList,将相应的行插入Task,然后提交事务。从某种意义上说,这肯定是 "atomic",因为您不能(永久)在数据库中写入部分数据。

如果TaskList的ID是自增的,你可以通过LAST_INSERT_ID获取,然后用于Task的FK。