Share via


Informazioni sulle differenze fra trigger DDL e trigger DML

I trigger DDL e i trigger DML hanno utilizzi diversi.

I trigger DML operano sulle istruzioni INSERT, UPDATE e DELETE e contribuiscono all'applicazione delle regole business e all'estensione dell'integrità dei dati quando si modificano i dati in tabelle o viste.

I trigger DDL operano sulle istruzioni CREATE, ALTER, DROP e su altre stored procedure e istruzioni DDL che eseguono operazioni di tipo DDL. Vengono utilizzati per l'esecuzione di attività amministrative e l'applicazione delle regole business che interessano i database. Sono applicabili a tutti i comandi di un solo tipo in un database o in un server.

Trigger DML e trigger DDL vengono creati, eliminati e modificati utilizzando sintassi Transact-SQL simile e condividono alcune funzioni simili.

Ambedue i tipi di trigger possono eseguire codice gestito contenuto in un assembly creato in Microsoft.NET Framework e caricato in SQL Server. Per ulteriori informazioni, vedere Programmazione di trigger CLR.

Come avviene per i trigger DML, è possibile creare più trigger DDL nella stessa istruzione Transact-SQL. Inoltre, un trigger DDL e l'istruzione che lo attiva vengono eseguiti nella stessa transazione. Il rollback della transazione può essere eseguito dall'interno del trigger. Gli errori gravi possono provocare il rollback automatico di un'intera transazione. I trigger DDL eseguiti da un batch che includono esplicitamente l'istruzione ROLLBACK TRANSACTION annulleranno l'intero batch. Per ulteriori informazioni, vedere Utilizzo di trigger DML che includono COMMIT o ROLLBACK TRANSACTION.

[!NOTA]

Non è possibile eseguire il rollback di un evento ALTER DATABASE che si verifica nel corpo di un trigger DDL.

Come i trigger DML, i trigger DDL possono essere nidificati. Per ulteriori informazioni, vedere Utilizzo di trigger nidificati.

Quando si progettano i trigger DDL vanno considerate le differenze seguenti rispetto ai trigger DML:

  • I trigger DDL vengono eseguiti solo dopo il completamento di un'istruzione Transact-SQL. I trigger DDL non possono essere utilizzati come trigger INSTEAD OF.

  • I trigger DDL non creano le tabelle inserted e deleted. Le informazioni relative a un evento che attiva un trigger DDL e le successive modifiche provocate dal trigger vengono acquisite mediante la funzione EVENTDATA. Per ulteriori informazioni, vedere Utilizzo della funzione EVENTDATA.

Vedere anche

Concetti