Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memasukkan Data ke dalam Berbilang Jadual MySQL Semasa Mengendalikan ID Auto-Incremented?

Bagaimana untuk Memasukkan Data ke dalam Berbilang Jadual MySQL Semasa Mengendalikan ID Auto-Incremented?

Mary-Kate Olsen
Lepaskan: 2024-12-18 14:34:14
asal
132 orang telah melayarinya

How to Insert Data into Multiple MySQL Tables While Handling Auto-Incremented IDs?

Memasukkan Data ke dalam Berbilang Jadual MySQL

Dalam MySQL, tidak mungkin untuk melaksanakan satu pertanyaan untuk memasukkan data ke dalam berbilang jadual secara serentak. Untuk mencapai matlamat ini, satu pendekatan biasa ialah menggunakan berbilang pertanyaan. Walau bagaimanapun, ini menimbulkan persoalan tentang cara untuk menetapkan ID pengguna yang dinaikkan secara automatik daripada jadual pengguna kepada lajur id pengguna dalam jadual profil.

Penyelesaian: Menggunakan Transaksi dan LAST_INSERT_ID()

Kepada memindahkan ID yang dinaikkan automatik dengan lancar, kami boleh memanfaatkan urus niaga dan fungsi LAST_INSERT_ID(). Berikut ialah coretan kod yang disemak:

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;
Salin selepas log masuk

Dalam transaksi ini, pertanyaan pertama memasukkan rekod ke dalam jadual pengguna. Fungsi LAST_INSERT_ID() dalam pertanyaan kedua mendapatkan semula ID auto-increment daripada sisipan pertama dan memberikannya kepada medan userid dalam jadual profil. Penyata COMMIT memuktamadkan urus niaga, memastikan kedua-dua sisipan sama ada selesai atau digugurkan.

Pertimbangan Tambahan

LAST_INSERT_ID() Tetapkan Semula: Apabila pertanyaan kedua memasukkan rekod ke dalam jadual dengan lajur autokenaikan, LAST_INSERT_ID() dikemas kini kepada ID baharu. Untuk mengelakkan ini, anda boleh menyimpan ID awal dalam MySQL atau pembolehubah khusus bahasa:

Pilihan 1: Pembolehubah MySQL

INSERT ...
SELECT LAST_INSERT_ID() INTO @mysql_variable_here;
INSERT INTO table2 (@mysql_variable_here, ...);
Salin selepas log masuk

Pilihan 2 : Pembolehubah Bahasa

INSERT ...
$last_id = mysql_insert_id();
INSERT INTO table2 ($last_id, ...);
Salin selepas log masuk

Transaksi dan Gangguan: Jika pelaksanaan pertanyaan terganggu antara pertanyaan, anda mungkin menghadapi ketidakkonsistenan data. Untuk memastikan integriti data, anda boleh melaksanakan blok transaksi di sekitar pertanyaan, yang menjamin sama ada semua pertanyaan dilaksanakan atau tidak.

Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Data ke dalam Berbilang Jadual MySQL Semasa Mengendalikan ID Auto-Incremented?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan