Sisip MySQL ke dalam Pelbagai Jadual: Normalisasi Pangkalan Data
Sisipan data ke dalam berbilang jadual secara serentak dalam MySQL tidak disokong secara langsung. Walau bagaimanapun, terdapat pendekatan alternatif untuk mencapai fungsi ini.
Menggunakan Transaksi
Untuk memastikan ketekalan data merentas jadual, adalah disyorkan untuk menggunakan transaksi. Transaksi merangkumi satu siri pertanyaan sebagai satu unit, menjamin bahawa semua pertanyaan sama ada berjaya atau gagal bersama-sama.
Berikut ialah contoh menggunakan urus niaga:
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;
Mendapatkan Autokenaikan Nilai
Untuk memasukkan id kenaikan automatik daripada jadual pengguna ke dalam jadual profil, anda boleh menggunakan fungsi LAST_INSERT_ID(). Walau bagaimanapun, jika penyata sisipan berikutnya dimasukkan ke dalam jadual dengan lajur autokenaikan sendiri, nilai LAST_INSERT_ID() akan dikemas kini kepada nilai jadual tersebut.
Untuk mengekalkan nilai LAST_INSERT_ID() asal, anda boleh menyimpan dalam pembolehubah tersuai dalam transaksi.
Menggunakan MySQL Pembolehubah:
INSERT ... SELECT LAST_INSERT_ID() INTO @mysql_variable_here; INSERT INTO table2 (@mysql_variable_here, ...);
Menggunakan Pembolehubah Bahasa:
// PHP example $mysqli->query("INSERT INTO table1 ..."); $userid = $mysqli->insert_id; $mysqli->query("INSERT INTO table2 ($userid, ...)");
Awas
Adalah penting untuk pertimbangkan ketekalan pangkalan data apabila memasukkan ke dalam berbilang jadual. Jika terganggu, transaksi memastikan bahawa semua pertanyaan sama ada dilaksanakan sepenuhnya atau tidak sama sekali. Tanpa urus niaga, sisipan separa boleh mengakibatkan ketidakkonsistenan.
Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Data ke dalam Berbilang Jadual MySQL Secara serentak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!