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!