DISABLE TRIGGER (Transact-SQL)
Disables a trigger.
Triggers are enabled by default when they are created. Disabling a trigger does not drop it. The trigger still exists as an object in the current database. However, the trigger does not fire when any Transact-SQL statements on which it was programmed are executed. Triggers can be re-enabled by using ENABLE TRIGGER. DML triggers defined on tables can be also be disabled or enabled by using ALTER TABLE.
To disable a DML trigger, at a minimum, a user must have ALTER permission on the table or view on which the trigger was created.
To disable a DDL trigger with server scope (ON ALL SERVER) or a logon trigger, a user must have CONTROL SERVER permission on the server. To disable a DDL trigger with database scope (ON DATABASE), at a minimum, a user must have ALTER ANY DATABASE DDL TRIGGER permission in the current database.
A. Disabling a DML trigger on a table
The following example disables trigger uAddress that was created on table Address.
USE AdventureWorks2008R2; GO DISABLE TRIGGER Person.uAddress ON Person.Address; GO
B. Disabling a DDL trigger
The following example creates a DDL trigger safety with database scope, and then disables it.
IF EXISTS (SELECT * FROM sys.triggers
WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety ON DATABASE;
GO
CREATE TRIGGER safety
ON DATABASE
FOR DROP_TABLE, ALTER_TABLE
AS
PRINT 'You must disable Trigger "safety" to drop or alter tables!'
ROLLBACK;
GO
DISABLE TRIGGER safety ON DATABASE;
GO
C. Disabling all triggers that were defined with the same scope
The following example disables all DDL triggers that were created at the server scope.
USE AdventureWorks2008R2; GO DISABLE Trigger ALL ON ALL SERVER; GO
