Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mengemas kini Baris dalam Jadual yang Sama menggunakan Pencetus MySQL?

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

DDD
DDDasal
2024-11-02 04:14:02658semak imbas

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
-- 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

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!

Kenyataan:
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