トランザクションでは、必ず3つの挿入を行う必要があります。おそらく、挿入を処理するためのストアドプロシージャを作成します。
編集:
トランザクションを使用したストアドプロシージャの例を次に示します。以前に挿入されたレコードのIDを取得するためのLAST_INSERT_ID()の使用に注意してください。これは2つのテーブルだけですが、3つのテーブルに拡張できるはずです。
DELIMITER //
CREATE PROCEDURE new_engineer_with_task(
first CHAR(35), last CHAR(35), email CHAR(255), tool_id INT)
BEGIN
START TRANSACTION;
INSERT INTO engineers (firstname, lastname, email)
VALUES(first, last, email);
INSERT INTO tasks (engineer_id, tool_id)
VALUES(LAST_INSERT_ID(), tool_id);
COMMIT;
END//
DELIMITER ;
そして、あなたはそれをそのように呼びます:
CALL new_engineer_with_task('Jerry', 'Fernholz', '[email protected]', 1);