Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memasukkan Data ke dalam Berbilang Jadual MySQL Secara serentak dan Mengekalkan Integriti Data?
Anda telah menghadapi dilema: memasukkan data ke dalam berbilang jadual secara serentak menggunakan satu pertanyaan MySQL. Walau bagaimanapun, anda telah mendapati ini tidak mungkin. Untuk mengatasi cabaran ini, anda telah mempertimbangkan untuk menggunakan berbilang pertanyaan:
INSERT INTO users (username, password) VALUES('test', 'test') INSERT INTO profiles (userid, bio, homepage) VALUES('[id of the user here?]','Hello world!', 'http://www.stackoverflow.com')
Tetapi kini anda menghadapi masalah baharu: bagaimana untuk menetapkan ID kenaikan automatik daripada jadual pengguna kepada id pengguna "manual" untuk jadual profil?
Jawapannya: Menggunakan Transaksi
Walaupun anda tidak boleh masukkan ke dalam beberapa jadual dalam satu arahan MySQL, anda boleh memanfaatkan transaksi. Begini caranya:
BEGIN; INSERT INTO users (username, password) VALUES('test', 'test'); INSERT INTO profiles (userid, bio, homepage) VALUES(LAST_INSERT_ID(),'Hello world!', 'http://www.stackoverflow.com'); COMMIT;
Memahami LAST_INSERT_ID()
Fungsi LAST_INSERT_ID() membolehkan anda menggunakan semula nilai autoincrement. Dalam penyataan kedua, LAST_INSERT_ID() akan mendapatkan semula nilai lajur autoincrement yang dimasukkan dalam penyataan pertama secara automatik.
Kaedah Alternatif
1. Menggunakan Pembolehubah MySQL:
INSERT ... SELECT LAST_INSERT_ID() INTO @mysql_variable_here; INSERT INTO table2 (@mysql_variable_here, ...); INSERT INTO table3 (@mysql_variable_here, ...);
2. Menggunakan PHP atau Pembolehubah Bahasa Lain:
Nota tentang Ketekalan Transaksi
Adalah penting untuk membungkus pertanyaan anda dalam transaksi untuk memastikan ketekalan data, bermakna sama ada semua pertanyaan berjaya atau tidak. Jika pelaksanaan terganggu antara pertanyaan, sesetengah jadual mungkin telah memasukkan rekod manakala yang lain tidak. Transaksi menjamin bahawa ini tidak berlaku.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memasukkan Data ke dalam Berbilang Jadual MySQL Secara serentak dan Mengekalkan Integriti Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!