Rumah > Artikel > pangkalan data > Bagaimanakah saya boleh Mengemas kini Berbilang Jadual Secara serentak dalam MySQL?
Mengemas kini Berbilang Jadual Serentak dalam MySQL
Apabila bekerja dengan pangkalan data hubungan, mungkin perlu mengemas kini data berkaitan merentas berbilang jadual secara serentak. Ini menimbulkan cabaran jika pernyataan kemas kini standard digunakan, kerana ia hanya boleh mengubah suai satu jadual pada satu masa.
Pertimbangkan senario berikut, di mana dua jadual (Jadual_Satu dan Jadual_Dua) memerlukan kemas kini yang sama untuk tujuan penyahnormalan. Walaupun pertanyaan kemas kini untuk setiap jadual adalah hampir sama, ia berbeza dalam nama jadual dan ketersediaan medan.
Kemas Kini Asingkan
Secara tradisinya, kemas kini ini akan dilaksanakan secara berasingan:
UPDATE Table_One SET win = win+1, streak = streak+1, score = score+200 WHERE userid = 1 AND lid = 1 LIMIT 1; UPDATE Table_Two SET win = win+1, streak = streak+1, score = score+200 WHERE userid = 1 LIMIT 1;
Kemas Kini Berbilang Jadual
Walau bagaimanapun, MySQL menawarkan penyelesaian yang lebih cekap dengan kemas kini berbilang jadual. Dengan menyertai jadual pada medan biasa (dalam kes ini, "userid"), adalah mungkin untuk mengemas kini kedua-dua jadual dengan satu pertanyaan:
UPDATE Table_One a INNER JOIN Table_Two b ON (a.userid = b.userid) SET a.win = a.win+1, a.streak = a.streak+1, a.score = a.score+200, b.win = b.win+1, b.streak = b.streak+1, b.score = b.score+200 WHERE a.userid = 1 AND a.lid = 1 AND b.userid = 1;
Adalah penting untuk ambil perhatian bahawa kemas kini berbilang jadual dilakukan tidak menyokong klausa LIMIT, yang boleh menyebabkan kemas kini yang tidak diingini jika tidak digunakan dengan berhati-hati. Penyelesaian alternatif, seperti prosedur tersimpan atau transaksi, mungkin lebih sesuai dalam senario tertentu.
Atas ialah kandungan terperinci Bagaimanakah saya boleh Mengemas kini Berbilang Jadual Secara serentak dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!