Share via


Informazioni sui trigger DML

In MicrosoftSQL Server sono disponibili due meccanismi principali per applicare regole business e integrità dei dati, ovvero i vincoli e i trigger. Un trigger è un tipo speciale di stored procedure che diventa effettiva automaticamente quando viene eseguito un evento del linguaggio. In SQL Server sono inclusi tre tipi generali di trigger, i trigger DML, i trigger DDL e i trigger LOGON.

I trigger DDL vengono richiamati quando viene generato un evento DDL (Data Definition Language) nel server o nel database. I trigger DDL vengono descritti in modo più dettagliato in Trigger DDL. I trigger LOGON consentono di attivare stored procedure in risposta a un evento LOGON generato quando viene stabilita una sessione utente a un'istanza di SQL Server. Per ulteriori informazioni, vedere Trigger LOGON.

I trigger DML vengono richiamati quando viene generato un evento DML (Data Manipulation Language) nel database. Gli eventi DML includono le istruzioni INSERT, UPDATE e DELETE, che consentono di modificare i dati in una tabella o una vista specifica. Un trigger DML può eseguire query su altre tabelle e includere istruzioni Transact-SQL complesse. Il trigger e l'istruzione che lo attiva vengono considerati come una singola transazione, di cui è possibile eseguire il rollback dal trigger stesso. Se viene rilevato un errore grave, ad esempio un'insufficienza di spazio su disco, viene eseguito automaticamente il rollback dell'intera transazione.

I trigger DML sono utili per i motivi seguenti:

  • Consentono di propagare le modifiche nelle tabelle correlate del database. È tuttavia possibile eseguire le modifiche in modo più efficiente utilizzando vincoli di integrità referenziale di propagazione.

  • Assicurano la protezione contro operazioni INSERT, UPDATE e DELETE dannose o non corrette e applicano altre restrizioni più complesse rispetto a quelle definite con i vincoli CHECK.

    A differenza dei vincoli CHECK, i trigger DML possono fare riferimento alle colonne di altre tabelle. Un trigger, ad esempio, può utilizzare un'istruzione SELECT di un'altra tabella per eseguire il confronto con i dati inseriti o aggiornati e per eseguire ulteriori operazioni, ad esempio la modifica di dati o la visualizzazione di un messaggio di errore definito dall'utente.

  • Consentono di valutare lo stato di una tabella prima e dopo la modifica dei dati e di eseguire le operazioni appropriate sulla base delle differenze.

  • Più trigger DML dello stesso tipo (INSERT, UPDATE o DELETE) in una tabella consentono di eseguire più operazioni diverse in risposta alla stessa istruzione di modifica.