私はTaskLists
のテーブルと、自動的に生成されたプライマリキーとTasks
テーブルを持っています。 TaskList
は複数のTasks
を持つことができます。MySQL:テーブルへのアトミックな挿入と関連テーブルへの同時投稿
TaskLists
行を挿入すると同時に、ちょうど挿入されたオブジェクトを参照するTasks
テーブルに複数の行をアトミックに挿入しません。
私はTaskLists
のテーブルと、自動的に生成されたプライマリキーとTasks
テーブルを持っています。 TaskList
は複数のTasks
を持つことができます。MySQL:テーブルへのアトミックな挿入と関連テーブルへの同時投稿
TaskLists
行を挿入すると同時に、ちょうど挿入されたオブジェクトを参照するTasks
テーブルに複数の行をアトミックに挿入しません。
を使用し、この中には何も宇宙は「同じ時」に起こるので、あなたはできません。 :)
TaskList
に行を挿入し、対応する行をTask
に挿入し、トランザクションをコミットすることができます。それは確かにあなたが(永久に)部分的なデータをデータベースに書くことができなかったという意味では、 "原子的"であろう。
TaskList
のIDが自動インクリメントされている場合はLAST_INSERT_ID
で取得し、Task
のFKに使用できます。
、あなたがTaskList
から値を利用したい場合はAFTER INSERT
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;
をhappends triggers
の使用をしない一般相対性理論によるとNEW.columname
https://www.techonthenet.com/mysql/triggers/after_insert.php
トリガは、トランザクション内で実行されない場合、それ自体がアトミックではありません。何らかの理由で1つのクエリが失敗した場合でも、障害が発生したクエリは何が実行されても実行され続けます。 – Zalomon
トリガーを使用することができます –
トランザクションを使用する必要があります。トランザクションをロールバックしたり自由にコミットしたりすることができます。 – Zalomon