Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memasukkan Data dengan Cekap ke dalam Berbilang Jadual MySQL dalam Satu Transaksi?

Bagaimana untuk Memasukkan Data dengan Cekap ke dalam Berbilang Jadual MySQL dalam Satu Transaksi?

Susan Sarandon
Susan Sarandonasal
2024-12-14 19:54:11148semak imbas

How to Efficiently Insert Data into Multiple MySQL Tables in a Single Transaction?

Masukkan MySQL ke dalam Berbilang Jadual

Percubaan untuk memasukkan data ke dalam berbilang jadual dengan satu pertanyaan MySQL mungkin menghasilkan hasil yang tidak dijangka. Walaupun nampaknya berbilang pertanyaan akan menyelesaikan isu ini, mengaitkan ID autokenaikan daripada jadual pengguna kepada ID pengguna manual untuk jadual profil memberikan cabaran.

Menggunakan Transaksi dan LAST_INSERT_ID()

Untuk memasukkan ke dalam beberapa jadual dalam satu transaksi, gunakan yang berikut pendekatan:

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;
  • Mulakan transaksi dengan "BEGIN;".
  • Sisipkan ke dalam jadual pertama, tangkap ID kenaikan automatik menggunakan "LAST_INSERT_ID()".
  • Masukkan ke dalam jadual kedua, merujuk ID yang ditangkap sebagai "userid".
  • Komit transaksi dengan "COMMIT;".

Menyimpan ID AutoTambahan dalam Pembolehubah

Sebagai alternatif, menyimpan ID autokenaikan dalam pembolehubah membenarkan rujukannya dalam pertanyaan seterusnya. Ini boleh dicapai menggunakan:

  • Pembolehubah MySQL:

    INSERT INTO ...
    SELECT LAST_INSERT_ID() INTO @mysql_variable_here;
    INSERT INTO table2 (@mysql_variable_here, ...);
  • PHP pembolehubah:

    INSERT ...
    $result = mysql_query("SELECT LAST_INSERT_ID()");
    $id = mysql_result($result, 0);
    INSERT INTO table2 ($id, ...);

Pertimbangan Transaksi

Tidak kira pendekatan yang dipilih, pertimbangkan potensi kesan pelaksanaan tergendala. Sekiranya tiada transaksi, ketidakkonsistenan mungkin timbul dalam pangkalan data anda. Untuk mengelakkan ini, bungkus penyata sisipan dalam transaksi, seperti yang ditunjukkan di atas.

Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Data dengan Cekap ke dalam Berbilang Jadual MySQL dalam Satu Transaksi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn