SQL Server’da Triggerları Toplu Olarak Silmek
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.
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.