Mencegah Rekursi dalam Pencetus Pelayan SQL
Pencetus ialah alat berkuasa dalam pengurusan pangkalan data, membenarkan pembangun melaksanakan tindakan tersuai apabila peristiwa tertentu berlaku dalam pangkalan data. Walau bagaimanapun, pencetus juga boleh membawa kepada rekursi yang tidak diingini, di mana pencetus memanggil dirinya sendiri, mengakibatkan gelung tidak terhingga.
Dalam SQL Server, pencetus boleh dibuat untuk melaksanakan secara automatik apabila jadual diubah suai melalui sisipan, kemas kini atau memadam operasi. Untuk mengelakkan pengulangan, adalah penting untuk melaksanakan semakan dalam kod pencetus untuk membezakan antara kemas kini yang dimulakan oleh pencetus itu sendiri dan kemas kini yang datang daripada sumber lain.
Satu pendekatan untuk mengelakkan pengulangan ialah menyemak tahap bersarang bagi pencetus menggunakan fungsi TRIGGER_NESTLEVEL(). Fungsi ini mengembalikan tahap sarang semasa pencetus, menunjukkan bilangan kali ia telah dilaksanakan secara rekursif. Jika tahap sarang semasa adalah lebih daripada 1, ini menunjukkan bahawa pencetus sedang dilaksanakan daripada tindakan pencetus lain, dan oleh itu tiada tindakan lanjut diperlukan.
Berikut ialah kod pencetus yang dikemas kini yang menggabungkan pendekatan ini:
ALTER TRIGGER [dbo].[tblMediaAfterInsertOrUpdate] ON [dbo].[tblMedia] BEFORE INSERT, UPDATE AS BEGIN SET NOCOUNT ON DECLARE @IdMedia INTEGER, @NewSubject NVARCHAR(200)
Atas ialah kandungan terperinci Bagaimana untuk Mencegah Rekursi dalam Pencetus SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!