Penyelesaian Pencetus MySQL untuk Mengemas kini Jadual Sama
MySQL sememangnya mengehadkan pencetus daripada mengemas kini baris dalam jadual yang sama yang ditetapkan, menghalang panggilan rekursif . Walaupun pengehadan ini, penyelesaian yang berdaya maju wujud.
Penyelesaian Cadangan
Daripada mengemas kini baris secara langsung dalam pencetus, manfaatkan prosedur tersimpan yang melaksanakan logik yang diingini. Kaedah ini mengasingkan tugas kemas kini baris daripada pencetus dan membolehkan anda memintas sekatan.
Contoh
Pertimbangkan senario berikut:
<code class="sql">CREATE TABLE MyTable ( id INT PRIMARY KEY, attribute VARCHAR(255) ); -- Trigger to insert a row into MyTable for each new parent product record CREATE TRIGGER my_trigger AFTER INSERT ON Products FOR EACH ROW BEGIN -- Issue SQL statement to call a stored procedure that performs the insert CALL insert_attribute(NEW.id, 'Value'); END;</code>
Dalam contoh di atas, pencetus my_trigger memanggil prosedur tersimpan insert_attribute untuk memasukkan baris ke dalam MyTable apabila rekod baharu dimasukkan ke dalam jadual Produk, dengan berkesan meniru kefungsian kemas kini baris langsung dalam pencetus.
Pertimbangan Tambahan
Walaupun penyelesaian ini berfungsi sebagai penyelesaian berfungsi, adalah penting untuk ambil perhatian bahawa ia berbeza daripada pencetus tradisional dari segi prestasi dan kebolehselenggaraan. Prosedur tersimpan boleh memperkenalkan overhed dan kerumitan tambahan kepada sistem pangkalan data berbanding dengan kemas kini pencetus langsung.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengemas kini jadual yang sama dalam pencetus MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!