Microsoft SQL Server
grilletto
Ricerca…
introduzione
Un trigger è un tipo speciale di stored procedure, che viene eseguito automaticamente dopo che si è verificato un evento. Esistono due tipi di trigger: Trigger linguaggio definizione dati e trigger linguaggio di manipolazione dati.
Di solito è legato a un tavolo e si attiva automaticamente. Non è possibile chiamare esplicitamente alcun trigger.
Tipi e classificazioni di Trigger
In SQL Server esistono due categorie di trigger: Trigger DDL e Trigger DML.
I trigger DDL vengono attivati in risposta agli eventi DDL (Data Definition Language). Questi eventi corrispondono principalmente alle istruzioni Transact-SQL che iniziano con le parole chiave CREATE
, ALTER
e DROP
.
I trigger DML vengono attivati in risposta agli eventi DML (Data Manipulation Language). Questi eventi corrispondono alle istruzioni Transact-SQL che iniziano con le parole chiave INSERT
, UPDATE
e DELETE
.
I trigger DML sono classificati in due tipi principali:
After Triggers (per trigger)
- AFTER INSERT Trigger.
- AFTER UPDATE Trigger.
- AFTER DELETE Trigger.
Invece di trigger
- INVIO DI INSERIMENTO Trigger.
- INVECE DI AGGIORNAMENTO Trigger.
- INVECE DI CANCELLARE Trigger.
Trigger DML
I trigger DML sono attivati come risposta alle istruzioni dml ( insert
, update
o delete
).
È possibile creare un trigger dml per indirizzare uno o più eventi dml per una singola tabella o vista. Ciò significa che un singolo trigger dml può gestire l'inserimento, l'aggiornamento e l'eliminazione di record da una tabella o vista specifica, ma può solo gestire i dati modificati su quella singola tabella o vista.
Trigger DML fornisce l'accesso alle tabelle inserted
ed deleted
che contengono informazioni sui dati che sono stati / saranno interessati dall'istruzione di inserimento, aggiornamento o cancellazione che ha attivato il trigger.
Tieni presente che i trigger DML sono basati su istruzioni, non basati su righe. Ciò significa che se l'istruzione ha effettuato più di una riga, le tabelle inserite o eliminate conterranno più di una riga.
Esempi:
CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething
FOR INSERT
AS
INSERT INTO tblAudit (TableName, RecordId, Action)
SELECT 'tblSomething', Id, 'Inserted'
FROM Inserted
GO
CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething
FOR UPDATE
AS
INSERT INTO tblAudit (TableName, RecordId, Action)
SELECT 'tblSomething', Id, 'Updated'
FROM Inserted
GO
CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething
FOR DELETE
AS
INSERT INTO tblAudit (TableName, RecordId, Action)
SELECT 'tblSomething', Id, 'Deleted'
FROM Deleted
GO
Tutti gli esempi precedenti aggiungeranno record a tblAudit ogni volta che un record viene aggiunto, eliminato o aggiornato in tblSomething.