Bagaimanakah Saya Boleh Kemas Kini Baris dalam Jadual Yang Sama Menggunakan Pencetus MySQL?

Linda Hamilton
Lepaskan: 2024-11-03 09:31:29
asal
578 orang telah melayarinya

How Can I Update Rows in the Same Table Using MySQL Triggers?

Pencetus MySQL: Mengatasi Had Kemas Kini

Dalam MySQL, pencetus menyediakan cara untuk melaksanakan tindakan secara automatik sebagai tindak balas kepada peristiwa pangkalan data. Walau bagaimanapun, satu had yang ketara ialah ketidakupayaan untuk mengemas kini baris dalam jadual yang sama yang pencetus ditetapkan. Sekatan ini boleh menimbulkan cabaran apabila melaksanakan operasi pangkalan data tertentu.

Penyelesaian Penyelesaian

Untuk memintas pengehadan ini, beberapa penyelesaian wujud:

Menggunakan Prosedur Tersimpan:

Penyelesaian yang paling biasa ialah mencipta prosedur tersimpan yang melaksanakan operasi kemas kini yang diingini. Pencetus kemudiannya boleh menggunakan prosedur tersimpan dan bukannya mengemas kini jadual secara terus. Pendekatan ini secara berkesan menyumber luar tugas kemas kini ke blok kod yang berasingan.

Contoh:

<code class="sql">CREATE TRIGGER trigger_name AFTER INSERT ON table_name
FOR EACH ROW
CALL update_procedure(NEW.id, NEW.column1);</code>
Salin selepas log masuk

Menggunakan Jadual Sementara:

Penyelesaian lain melibatkan penggunaan jadual sementara untuk menjalankan operasi kemas kini. Pencetus boleh membuat jadual sementara dan melakukan kemas kini yang diperlukan di sana. Setelah kemas kini selesai, pencetus boleh menyalin data daripada jadual sementara kembali ke dalam jadual asal.

Contoh:

<code class="sql">CREATE TRIGGER trigger_name AFTER INSERT ON table_name
FOR EACH ROW
BEGIN
  INSERT INTO tmp_table VALUES (NEW.id, NEW.column1);
END;

UPDATE table_name SET column1 = (SELECT column1 FROM tmp_table WHERE id = OLD.id);</code>
Salin selepas log masuk

Menggunakan ROW_UPDATER Fungsi:

Dalam MySQL 8.0, fungsi ROW_UPDATER membenarkan pencetus mengemas kini baris dalam jadual yang sama menggunakan pertanyaan bersarang. Pendekatan ini memberikan penyelesaian yang lebih mudah berbanding dengan penyelesaian sebelumnya.

Contoh:

<code class="sql">CREATE TRIGGER trigger_name AFTER INSERT ON table_name
FOR EACH ROW
UPDATE table_name SET column1 = (SELECT NOW() FROM dual)
WHERE id = NEW.id;</code>
Salin selepas log masuk

Kesimpulan

Sementara Pencetus MySQL tidak boleh terus mengemas kini baris dalam jadual yang sama yang ditetapkan kepada mereka, penyelesaian ini menawarkan alternatif yang berkesan. Dengan memahami batasan dan melaksanakan penyelesaian yang sesuai, pembangun boleh memanfaatkan keupayaan penuh pencetus MySQL dalam operasi pangkalan data mereka.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Kemas Kini Baris dalam Jadual Yang Sama Menggunakan Pencetus MySQL?. 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