Tóm lại, bạn muốn sử dụng giao dịch (tài liệu khác về điều này) để các nội dung chèn của bạn là nguyên tử . Đây là cách duy nhất để đảm bảo rằng tất cả (hoặc không) dữ liệu của bạn sẽ được chèn vào. Nếu không, bạn có thể gặp phải tình huống như mô tả khi cơ sở dữ liệu không khả dụng sau khi một số lần chèn và những lần khác không thể hoàn thành. Một giao dịch cho cơ sở dữ liệu biết rằng những gì bạn đang làm là hoàn toàn hoặc không có gì và vì vậy nó sẽ quay trở lại nếu có sự cố.
Như bạn đang sử dụng khóa chính tổng hợp, PHP và các ngôn ngữ khác cung cấp các cơ chế để lấy id được chèn lần cuối. Nếu bạn muốn thực hiện hoàn toàn trong MySQL, bạn có thể sử dụng LAST_INSERT_ID () hàm số. Bạn sẽ có mã như thế này:
START TRANSACTION;
INSERT INTO foo (auto,text)
VALUES(NULL,'text'); # generate ID by inserting NULL
INSERT INTO foo2 (id,text)
VALUES(LAST_INSERT_ID(),'text'); # use ID in second table
COMMIT;