Rumah > pangkalan data > tutorial mysql > Bolehkah MySQL mengemas kini berbilang jadual serentak dalam satu pertanyaan?

Bolehkah MySQL mengemas kini berbilang jadual serentak dalam satu pertanyaan?

DDD
Lepaskan: 2024-11-02 22:46:30
asal
945 orang telah melayarinya

Can MySQL update multiple tables simultaneously in a single query?

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

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

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:

  • Tiada sokongan LIMIT - Berbilang jadual kemas kini tidak menyokong klausa LIMIT. Ini boleh membawa kepada kemas kini yang tidak diingini jika berhati-hati tidak dilakukan.
  • Berpotensi lebih perlahan - Bergantung pada kerumitan pertanyaan dan data yang terlibat, kemas kini berbilang jadual boleh menjadi lebih perlahan daripada melakukan pertanyaan berasingan pada setiap meja.

Alternatif Penyelesaian

Bergantung pada keperluan khusus, terdapat penyelesaian alternatif untuk dipertimbangkan dan bukannya kemas kini berbilang jadual:

  • Prosedur Tersimpan - Prosedur tersimpan boleh digunakan untuk merangkum satu siri operasi pangkalan data, termasuk berbilang kemas kini.
  • Transaksi - Transaksi menyediakan mekanisme untuk memastikan berbilang operasi pangkalan data dilakukan sebagai satu unit, memastikan konsistensi dan integriti data.

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan