Condividi tramite


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)