Mengemas kini Berbilang Jadual Serentak dalam MySQL
Dalam operasi pangkalan data, mungkin perlu untuk mengemas kini nilai dalam berbilang jadual serentak, mungkin dengan pelbagai tahap butiran atau keadaan tambahan. Senario biasa ialah apabila berbilang jadual memerlukan data yang sama untuk tujuan penyahnormalan.
Dalam kes sedemikian, melakukan pertanyaan KEMASKINI yang berasingan pada setiap jadual boleh menjadi tidak cekap dan berlebihan. Artikel ini menjawab persoalan sama ada mungkin untuk menggabungkan berbilang operasi KEMASKINI ke dalam satu pertanyaan bersatu.
Kemas kini Berbilang Jadual
Dokumentasi MySQL menyediakan penyelesaian menggunakan kemas kini berbilang jadual. Pendekatan ini membolehkan untuk mengemas kini berbilang jadual dalam pertanyaan yang sama dengan menyertainya menggunakan lajur atau ungkapan biasa. Sintaks untuk kemas kini berbilang jadual adalah seperti berikut:
UPDATE table1 INNER JOIN table2 ON (table1.column = table2.column) SET table1.column1 = ..., table1.column2 = ..., table2.column1 = ..., table2.column2 = ... WHERE ...
Contoh
Pertimbangkan soalan yang dikemukakan dalam pernyataan masalah: dua jadual dengan beberapa perbezaan dalam lajur dan keperluan untuk kemas kini yang sama. Menggunakan pendekatan kemas kini berbilang jadual, kita boleh menggabungkan dua pertanyaan KEMASKINI menjadi satu:
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
Dalam contoh ini, Table_One mempunyai lajur tambahan (penutup) yang tidak terdapat dalam Table_Two. Syarat gabungan memastikan kemas kini dilakukan hanya pada baris yang sepadan.
Penghadan
Walaupun kemas kini berbilang jadual menyediakan cara yang mudah untuk mengemas kini berbilang jadual sekaligus, ia datang dengan beberapa had:
Alternatif Penyelesaian
Bergantung pada keperluan khusus, terdapat penyelesaian alternatif untuk dipertimbangkan dan bukannya kemas kini berbilang jadual:
Atas ialah kandungan terperinci Bolehkah MySQL mengemas kini berbilang jadual serentak dalam satu pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!