Informazioni sui trigger DDL

I trigger DDL, analogamente ai trigger normali, attivano stored procedure in risposta a un evento. Diversamente dai trigger DML, tuttavia, questi trigger non vengono attivati in risposta a istruzioni UPDATE, INSERT o DELETE in una tabella o una vista. Vengono invece attivati in risposta a un'ampia gamma di eventi DDL (Data Definition Language), che corrispondono principalmente a istruzioni Transact-SQL che iniziano con le parole chiave CREATE, ALTER e DROP. Alcune stored procedure di sistema che eseguono operazioni di tipo DDL possono inoltre attivare trigger DDL.

Nota importanteImportante

Testare i trigger DDL per determinarne la risposta alle stored procedure di sistema eseguite. Sia l'istruzione CREATE TYPE che la stored procedure sp_addtype, ad esempio, attivano un trigger DDL creato in un evento CREATE_TYPE.

I trigger DDL possono essere utilizzati per attività di amministrazione come il controllo e la regolazione delle operazioni sul database.

Utilizzare trigger DDL nei casi seguenti:

  • Si desidera impedire modifiche specifiche nello schema di database.

  • Si desidera che nel database si verifichi un cambiamento in risposta a una modifica nello schema di database.

  • Si desidera registrare modifiche o eventi nello schema di database.

I trigger DDL vengono attivati solo in seguito all'esecuzione delle istruzioni DDL che li hanno generati e non possono essere utilizzati come trigger INSTEAD OF.

Nell'esempio seguente viene illustrato l'utilizzo di un trigger DDL per impedire la modifica o l'eliminazione di qualsiasi tabella in un database.

CREATE TRIGGER safety 
ON DATABASE 
FOR DROP_TABLE, ALTER_TABLE 
AS 
   PRINT 'You must disable Trigger "safety" to drop or alter tables!' 
   ROLLBACK ;

I trigger DDL vengono attivati in risposta a un evento Transact-SQL elaborato nel database o nel server corrente. L'ambito del trigger dipende dall'evento. Per ulteriori informazioni sull'ambito dei trigger DDL, vedere Progettazione di trigger DDL.

Per ottenere un esempio di trigger DDL nel database di esempio AdventureWorks2008R2, in Esplora oggetti di SQL Server Management Studio aprire la cartella Trigger database, inclusa nella cartella Programmabilità del database AdventureWorks2008R2. Fare clic con il pulsante destro del mouse su ddlDatabaseTriggerLog e scegliere Crea script per trigger database. Per impostazione predefinita, il trigger DDL ddlDatabaseTriggerLog è disattivato.