Bạn chắc chắn nên thực hiện ba lần chèn trong một giao dịch. Tôi có thể sẽ viết một thủ tục được lưu trữ để xử lý các phần chèn.
CHỈNH SỬA:
Đây là một ví dụ về một thủ tục được lưu trữ với một giao dịch. Lưu ý việc sử dụng LAST_INSERT_ID () để lấy ID của bản ghi đã chèn trước đó. Đây chỉ là hai bảng, nhưng bạn có thể mở rộng nó thành ba bảng.
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 ;
Và bạn gọi nó như vậy:
CALL new_engineer_with_task('Jerry', 'Fernholz', '[email protected]', 1);