DISABLE TRIGGER (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Consente di disabilitare un trigger.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
DISABLE 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 i trigger DDL o LOGON.
trigger_name
Nome del trigger che si desidera disabilitare.
ALL
Disabilita tutti i trigger con l'ambito specificato nella clausola ON.
Attenzione
SQL Server crea trigger nei database pubblicati per la replica di tipo merge. Se si specifica ALL nei database pubblicati, questi trigger vengono disabilitati e la replica viene ostacolata. Prima di utilizzare l'argomento ALL verificare che il database corrente non sia pubblicato per la replica di tipo merge.
object_name
Nome della tabella o della vista su cui deve essere eseguito il trigger DML trigger_name.
DATABASE
Per un trigger DDL, indica che trigger_name è stato creato o modificato per essere eseguito con ambito database.
ALL SERVER
Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
Per un trigger DDL, indica che trigger_name è stato creato o modificato per essere eseguito con ambito server. ALL SERVER si applica anche ai trigger LOGON.
Nota
Questa opzione non è disponibile in un database indipendente.
Osservazioni:
Per impostazione predefinita, i trigger vengono abilitati in fase di creazione. La disabilitazione di un trigger non ne comporta l'eliminazione. Il trigger continua a esistere come oggetto nel database corrente ma non viene attivato quando viene eseguita una qualsiasi istruzione Transact-SQL in cui è stato programmato. I trigger possono essere riabilitati tramite ENABLE TRIGGER. I trigger DML definiti su tabelle possono essere disabilitati o abilitati anche tramite ALTER TABLE.
La modifica del trigger tramite l'istruzione ALTER TRIGGER comporta l'abilitazione del trigger.
Autorizzazioni
Per disabilitare un trigger DML, è necessario disporre almeno dell'autorizzazione ALTER per la tabella o la vista per cui il trigger è stato creato.
Per disabilitare un trigger DDL con ambito server (ON ALL SERVER) o un trigger LOGON, è necessario disporre dell'autorizzazione CONTROL SERVER per il server. Per disabilitare un trigger DDL con ambito database (ON DATABASE), è necessario disporre almeno dell'autorizzazione ALTER ANY DATABASE DDL TRIGGER nel database corrente.
Esempi
Gli esempi di codice Transact-SQL in questo articolo utilizzano il database campione AdventureWorks2022
o AdventureWorksDW2022
, che è possibile scaricare dalla home page di Esempi di Microsoft SQL Server e progetti collettivi.
R. Disabilitazione di un trigger DML in una tabella
Nell'esempio seguente viene disabilitato il trigger uAddress
creato per la tabella Person
.
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO
B. Disabilitazione di un trigger DDL
Nell'esempio seguente viene creato e quindi disabilitato un trigger DDL safety
con ambito database.
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. Disabilitazione di tutti i trigger definiti con lo stesso ambito
Nell'esempio seguente vengono disabilitati tutti i trigger DDL creati nell'ambito del server.
DISABLE Trigger ALL ON ALL SERVER;
GO
Vedi anche
ENABLE TRIGGER (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)