Herkese merhaba,
Bu yazıda SQL Server’da triggerları toplu olarak silmek hakkında bilgi vereceğim.
SQL Server’da bazı durumlarda veritabanındaki triggerları toplu olarak silmek isteyebiliriz.
Aşağıdaki kod yardımıyla bu işlemi rahatlıkla yapabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
DECLARE @SQLCmd NVARCHAR(1000); DECLARE @Trig VARCHAR(500); DECLARE @sch VARCHAR(500); DECLARE TGCursor CURSOR FOR SELECT ISNULL(tbl.name, vue.name) AS [schemaName], trg.name AS triggerName FROM sys.triggers trg LEFT OUTER JOIN ( SELECT tparent.object_id, ts.name FROM sys.tables tparent INNER JOIN sys.schemas ts ON ts.schema_id = tparent.SCHEMA_ID ) AS tbl ON tbl.OBJECT_ID = trg.parent_id LEFT OUTER JOIN ( SELECT vparent.object_id, vs.name FROM sys.views vparent INNER JOIN sys.schemas vs ON vs.schema_id = vparent.SCHEMA_ID ) AS vue ON vue.OBJECT_ID = trg.parent_id; OPEN TGCursor; FETCH NEXT FROM TGCursor INTO @sch, @Trig; WHILE @@FETCH_STATUS = 0 BEGIN SET @SQLCmd = N'DROP TRIGGER [' + @sch + N'].[' + @Trig + N']'; EXEC sp_executesql @SQLCmd; PRINT 'Silinen TRIGGER : ' + @Trig; FETCH NEXT FROM TGCursor INTO @sch, @Trig; END; CLOSE TGCursor; DEALLOCATE TGCursor; |
Kodu çalıştırdığınızda aşağıdaki gibi bir sonuç alacaksınız.
Görüldüğü üzere tüm triggerlar silinmiş oldu.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.
