In questo articolo, esploreremo come creare e lavorare con i trigger in SQL Server.
Esistono tre tipi principali di trigger in SQL Server:
Esploriamo questi trigger in questa guida.
SQL Server DML Trigger
I trigger del linguaggio DML o di manipolazione dei dati sono tipi di trigger che sparano in risposta a un inserto, aggiorna ed elimina l'operazione su una tabella o visualizza. I trigger DML verranno eseguiti quando viene eseguita qualsiasi operazione valida, se sono interessate qualsiasi riga.
Crea DML dopo trigger
In SQL Server, è possibile creare un trigger DML utilizzando l'istruzione Crea trigger.
Crea trigger schema_name.trigger_nameRompi la sintassi sopra:
Per imparare a creare e utilizzare un grilletto DML, facciamo un esempio pratico.
Crea database di esempio e inserire i dati come previsto nel set di query mostrate di seguito:
-- Crea database di esempioUna volta che abbiamo i dati di esempio, possiamo procedere e creare un trigger DML per licenziare un'operazione di aggiornamento sulla tabella.
Considera l'esempio mostrato di seguito:
-- Crea la tabella per archiviare la cronologia degli aggiornamentiLa query sopra creerà un trigger che accende quando eseguiamo un aggiornamento sulla tabella. Per testare il trigger, possiamo eseguire un aggiornamento come:
-- Tabella di aggiornamentoDopo l'esecuzione, possiamo verificare se il trigger ha funzionato selezionando le colonne nella tabella modificata.
-- Controllare la tabella modificataIn SSMS, è possibile visualizzare i trigger su una tabella espandendo l'opzione Trigger:
Crea invece di innescare
L'altro tipo di innesco DML in SQL Server è invece dei trigger. Questi sono tipi di trigger che eseguono invece dell'istruzione DML. Ad esempio, se specifichiamo un'istruzione DELETE, possiamo utilizzare invece i trigger per essere eseguiti prima dell'operazione.
La sintassi per la creazione di un trigger anziché è mostrata:
Crea trigger schema_name.trigger_nameAd esempio, la query di seguito crea un trigger che visualizza un messaggio quando viene eseguita un'operazione di inserzione sulla tabella.
-- Crea invece di triggerUna volta eseguita la query sopra, dovremmo ricevere un messaggio che indica che non possiamo eseguire un inserto sulla tabella.
ErroreNon puoi inserire in questa tabella
SQL DDL Trigger
Il linguaggio DDL o Definizione dei dati sono trigger che rispondono agli eventi al server o al database anziché a una tabella. DDL Trigger risponderanno a eventi come Drop, Grant, Deny, Revok, Aggiorna le statistiche, Crea e Alter.
Crea trigger DDL
La sintassi per creare un trigger DDL è come mostrato:
Crea trigger trigger_namePossiamo abbattere la sintassi come:
La query di esempio seguente crea un trigger DDL che si accende quando viene rilasciata un'istruzione tabella di caduta.
-- Crea trigger DDLUna volta eseguito un evento drop sul database, il trigger visualizzerà le informazioni sull'evento utilizzando la funzione eventData ().
Possiamo testare il grilletto:
-- trigger di provaLa query dovrebbe restituire informazioni XML sull'evento come:
In SSMS, è possibile visualizzare i trigger espandendo i trigger di database in programmabilità nel database di destinazione.
Abilita/disabilita i trigger
SQL Server consente di abilitare e disabilitare i trigger. Per abilitare un trigger su una tabella, utilizzare la query come:
Abilita trigger update_trigger sulle vendite;Dove update_trigger rappresenta il nome e le vendite del trigger rappresentano il nome della tabella.
Puoi anche abilitare tutti i trigger su un tavolo come:
Abilita trigger tutto su table_name;Per abilitare il trigger del database, utilizzare la query:
Abilita trigger drop_ddl_trigger sulle vendite;Qui, drop_ddl_trigger rappresenta il nome e le vendite del trigger rappresentano il database.
Per abilitare tutti i trigger di database, utilizzare la query:
Abilita Trigger tutto sulle vendite;Per disabilitare un trigger di tabella o database, sostituire la parola chiave abilita con disabilita ☺️.
Elimina trigger
Per rimuovere un trigger, è possibile utilizzare l'istruzione DROP come mostrato:
Drop trigger se esiste trigger_name;SQL Server mostra tutti i trigger
Per visualizzare tutti i trigger in un'istanza SQL Server, utilizzare la query come mostrato:
Seleziona nome, type_desc, is_disabled, is_instead_of_trigger da sys.trigger dove type = 'tr'La query dovrebbe restituire tutti i trigger nell'istanza del server SQL come:
Scatenanti dell'accesso del server SQL
I trigger di accesso sono tipi di trigger che eseguono quando si verifica un'attività di accesso sul server. Questi tipi di trigger vengono eseguiti dopo un'autenticazione riuscita ma prima di creare una sessione utente. Poiché vengono utilizzati per gestire l'attività di accesso, li creiamo a livello di server, come mostrato nell'esempio seguente:
ATTENZIONE: Il trigger seguente può impedire l'accesso futuro al server. Assicurarsi di eliminare prima di accedere.
ATTENZIONE - ☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️.
-- Crea trigger di accessoIl trigger visualizzerà un messaggio quando l'utente accede al server.
Conclusione
In questa guida, hai compreso vari tipi di trigger, come creare, abilitare, disabilitare, eliminare e visualizzare i trigger in SQL Server.