Bagaimana untuk Mengemas kini Baris dalam Jadual yang Sama menggunakan Pencetus MySQL?

DDD
Lepaskan: 2024-11-02 04:14:02
asal
657 orang telah melayarinya

How to Update Rows in the Same Table using MySQL Triggers?

Pencetus dan Kemas Kini MySQL pada Jadual Yang Sama

Pencetus MySQL menawarkan mekanisme yang berkuasa untuk mengautomasikan tindakan apabila data dalam pangkalan data diubah suai atau dimasukkan . Walau bagaimanapun, had pencetus yang ketara ialah ketidakupayaan mereka untuk mengemas kini baris dalam jadual yang sama dengan pencetus ditetapkan. Sekatan ini timbul disebabkan oleh risiko panggilan rekursif, yang boleh membawa kepada tingkah laku yang tidak dapat diramalkan.

Untuk menangani had ini, pertimbangkan penyelesaian berikut:

Menggunakan Prosedur Tersimpan

Daripada bergantung pada pencetus, buat prosedur tersimpan yang merangkumi logik yang anda inginkan pencetus itu lakukan. Apabila pencetus dicetuskan, ia kemudiannya boleh menggunakan prosedur tersimpan ini untuk mengemas kini baris dalam jadual yang sama. Pendekatan ini secara berkesan menyerahkan tanggungjawab kemas kini kepada subrutin yang berasingan, mengelakkan kekangan yang dikenakan oleh pencetus.

Contoh Pelaksanaan

-- Stored Procedure to insert rows based on parent product record
CREATE PROCEDURE insert_child_records(
  IN parent_id INT
)
BEGIN
  -- Insert child records for the given parent
  DECLARE child_id INT;
  INSERT INTO child_table (parent_id)
  SELECT child_id FROM child_table WHERE parent_id = parent_id;
  
END // PROCEDURE insert_child_records
Salin selepas log masuk
-- Trigger to call stored procedure on new parent record
CREATE TRIGGER insert_child_trigger
AFTER INSERT ON parent_table
FOR EACH ROW
BEGIN
  -- Call the stored procedure to insert child records
  CALL insert_child_records(NEW.id);  -- Replace with actual column name
END // TRIGGER insert_child_trigger
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengemas 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!