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。
我有两个 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。