DISABLE TRIGGER (Transact-SQL)

Data aggiornamento: 12 dicembre 2006

Disattiva un trigger DML, DDL o LOGON.

Icona di collegamento a un argomentoConvenzioni della 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 il trigger appartiene. Non è possibile specificare schema_name per i trigger DDL o LOGON.
  • trigger_name
    Nome del trigger che si desidera disattivare.
  • ALL
    Disattiva tutti i trigger con l'ambito specificato nella clausola ON.

    ms189748.Caution(it-it,SQL.90).gifAttenzione:
    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 il trigger DML trigger_name deve essere eseguito.
  • DATABASE
    Per un trigger DDL, indica che trigger_name è stato creato o modificato per essere eseguito con ambito 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

Per impostazione predefinita, i trigger vengono attivati in fase di creazione. La disattivazione 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 riattivati tramite ENABLE TRIGGER. I trigger DML definiti su tabelle possono inoltre essere disattivati o attivati tramite ALTER TABLE.

Autorizzazioni

Per disattivare un trigger DML, è necessario disporre almeno dell'autorizzazione ALTER per la tabella o la vista per cui il trigger è stato creato.

Per disattivare un trigger DDL o LOGON con ambito server (ON ALL SERVER), è necessario disporre dell'autorizzazione CONTROL SERVER per il server. Per disattivare un trigger DDL con ambito database (ON DATABASE), è necessario disporre almeno dell'autorizzazione ALTER ANY DATABASE DDL TRIGGER nel database corrente.

Esempi

A. Disattivazione di un trigger DML per una tabella

Nell'esempio seguente viene disattivato il trigger uAddress creato per la tabella Address.

USE AdventureWorks;
GO
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO

B. Disattivazione di un trigger DDL

Nell'esempio seguente viene creato e quindi disattivato un trigger DDL safety con ambito database.

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. Disattivazione di tutti i trigger definiti con lo stesso ambito

Nell'esempio seguente vengono disattivati tutti i trigger DDL e LOGON creati nell'ambito del server.

USE AdventureWorks;
GO
DISABLE Trigger ALL ON ALL SERVER;
GO

Vedere anche

Riferimento

ENABLE TRIGGER (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

12 dicembre 2006

Nuovo contenuto:
  • Aggiunta in tutto l'argomento di informazioni sui trigger LOGON introdotti in SQL Server 2005 Service Pack 2.