ENABLE TRIGGER (Transact-SQL)
Data aggiornamento: 12 dicembre 2006
Attiva 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 il trigger appartiene. Non è possibile specificare schema_name per i trigger DDL o LOGON.
- trigger_name
Nome del trigger da attivare.
- ALL
Indica che vengono attivati 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 o LOGON, indica che trigger_name è stato creato o modificato per essere eseguito nell'ambito del server.
Osservazioni
L'attivazione di un trigger non comporta la sua creazione ex-novo. Un trigger disattivato continua a esistere come oggetto nel database corrente, ma non verrà mai attivato. Se si attiva un trigger, questo verrà attivato ogni volta che viene eseguito qualsiasi evento per il quale è stato programmato in origine. I trigger vengono disattivati tramite DISABLE TRIGGER. È possibile attivare o disattivare i trigger DML definiti nelle tabelle anche tramite ALTER TABLE.
Autorizzazioni
Per attivare 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 attivare un trigger DDL o LOGON con ambito server (ON ALL SERVER), è necessario disporre dell'autorizzazione CONTROL SERVER per il server. Per attivare 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. Attivazione di un trigger DML in una tabella
Nell'esempio seguente il trigger uAddress
creato nella tabella Address
viene attivato e quindi disattivato.
USE AdventureWorks;
GO
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO
ENABLE Trigger Person.uAddress ON Person.Address;
GO
B. Attivazione di un trigger DDL
Nell'esempio seguente viene creato un trigger DDL safety
nell'ambito del database e quindi viene disattivato.
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. Attivazione di tutti i trigger definiti nello stesso ambito
Nell'esempio seguente vengono attivati tutti i trigger DDL e LOGON creati nell'ambito del server.
USE AdventureWorks;
GO
ENABLE Trigger ALL ON ALL SERVER;
GO
Vedere anche
Riferimento
DISABLE TRIGGER (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)
Guida in linea e informazioni
Cronologia modifiche
Versione | Cronologia |
---|---|
12 dicembre 2006 |
|