Singkatnya, Anda ingin menggunakan transaksi (lebih banyak dokumen tentang ini) sehingga sisipan Anda atomik . Ini adalah satu-satunya cara untuk menjamin bahwa semua (atau tidak ada) data Anda akan dimasukkan. Jika tidak, Anda bisa masuk ke situasi yang Anda jelaskan di mana database menjadi tidak tersedia setelah beberapa penyisipan dan yang lainnya tidak dapat diselesaikan. Sebuah transaksi memberi tahu database bahwa apa yang Anda lakukan adalah semua-atau-tidak sama sekali dan oleh karena itu transaksi akan mundur jika terjadi kesalahan.
Saat Anda menggunakan kunci primer sintetis, sebagaimana adanya, PHP dan bahasa lain menyediakan mekanisme untuk mendapatkan id yang dimasukkan terakhir. Jika Anda ingin melakukannya sepenuhnya di MySQL, Anda dapat menggunakan LAST_INSERT_ID() fungsi. Anda akan mendapatkan kode seperti ini:
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;