ENABLE TRIGGER (Transact-SQL)
Abilita un trigger DML, DDL o LOGON.
Convenzioni della sintassi Transact-SQL
Sintassi
ENABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }
ON { object_name | DATABASE | ALL SERVER } [ ; ]
Argomenti
schema_name
Nome dello schema a cui appartiene il trigger. schema_name non può essere specificato per trigger DDL o LOGON.trigger_name
Nome del trigger da abilitare.ALL
Indica che vengono abilitati tutti i trigger definiti nell'ambito della clausola ON.object_name
Nome della tabella o vista per la quale il trigger DML specificato da trigger_name è stato creato e verrà eseguito.DATABASE
Per un trigger DDL, indica che trigger_name è stato creato o modificato per essere eseguito nell'ambito del database.ALL SERVER
Per un trigger DDL, indica che trigger_name è stato creato o modificato per essere eseguito nell'ambito del server. ALL SERVER si applica anche ai trigger LOGON.[!NOTA]
Questa opzione non è disponibile in un database indipendente.
Osservazioni
L'abilitazione di un trigger non comporta la sua creazione ex-novo. Un trigger disabilitato continua a esistere come oggetto nel database corrente, ma non verrà mai attivato. Se si abilita un trigger, questo verrà attivato ogni volta che vengono eseguite istruzioni Transact-SQL per le quali è stato programmato in origine. I trigger vengono disabilitati tramite DISABLE TRIGGER. I trigger DML definiti su tabelle possono inoltre essere disabilitati o abilitati tramite ALTER TABLE.
Autorizzazioni
Per abilitare un trigger DML, un utente deve disporre almeno dell'autorizzazione ALTER per la tabella o vista in base alla quale il trigger è stato creato.
Per abilitare un trigger DDL con ambito server (ON ALLA SERVER) o un trigger LOGON, è necessario disporre dell'autorizzazione CONTROL SERVER per il server. Per abilitare un trigger DDL nell'ambito del database (ON DATABASE), un utente deve disporre almeno dell'autorizzazione ALTER ANY DATABASE DDL TRIGGER nel database corrente.
Esempi
A.Abilitazione di un trigger DML in una tabella
Nell'esempio seguente il trigger uAddress creato nella tabella Address viene abilitato e quindi disabilitato.
USE AdventureWorks2012;
GO
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO
ENABLE Trigger Person.uAddress ON Person.Address;
GO
B.Abilitazione di un trigger DDL
Nell'esempio seguente viene creato un trigger DDL safety nell'ambito del database e quindi viene disabilitato.
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
ENABLE TRIGGER safety ON DATABASE;
GO
C.Abilitazione di tutti i trigger definiti nello stesso ambito
Nell'esempio seguente vengono abilitati tutti i trigger DDL creati nell'ambito del server.
USE AdventureWorks2012;
GO
ENABLE Trigger ALL ON ALL SERVER;
GO