Linee guida per la pianificazione di trigger DML

Sono presenti due opzioni per la progettazione di trigger DML:

  • I trigger INSTEAD OF vengono eseguiti in sostituzione della normale azione di trigger. Possono inoltre essere definiti in viste con una o più tabelle di base e, in tal caso, estendono i tipi di aggiornamenti supportati da una vista.

  • I trigger AFTER vengono eseguiti dopo l'esecuzione dell'azione associata all'istruzione INSERT, UPDATE o DELETE. Specificare AFTER equivale a specificare FOR. È possibile specificare i trigger AFTER solo nelle tabelle.

Nella tabella seguente è riportato un confronto tra le funzionalità dei trigger AFTER e INSTEAD OF.

Funzione

Trigger AFTER

Trigger INSTEAD OF

Applicabilità

Tabelle

Tabelle e viste

Quantità per tabella o vista

Multiplo per azione di trigger (UPDATE, DELETE e INSERT)

Singolo per azione di trigger (UPDATE, DELETE e INSERT)

Riferimenti di propagazione

Nessuna restrizione

I trigger INSTEAD OF UPDATE e DELETE non sono consentiti in tabelle che rappresentano le destinazioni di vincoli di integrità per operazioni referenziali di propagazione

Esecuzione

Dopo:

  • Elaborazione dei vincoli

  • Operazioni referenziali dichiarative

  • Creazione di tabelle inserted e deleted

  • Operazione di trigger

Prima di:

  • Elaborazione dei vincoli

In sostituzione di:

  • Operazione di trigger

Dopo:

  • Creazione di tabelle inserted e deleted

Ordine di esecuzione

È possibile specificare la prima e l'ultima esecuzione

Non applicabile

Riferimenti di colonna varchar(max), nvarchar(max) e varbinary(max) in tabelle inserted e deleted

Consentiti

Consentiti

Riferimenti di colonna text, ntext e image in tabelle inserted e deleted

Non consentiti

Consentiti