Microsoft SQL Server
trigger
Sök…
Introduktion
En trigger är en speciell typ av lagrad procedur, som körs automatiskt efter att en händelse inträffar. Det finns två typer av triggers: Data Definition Language Triggers och Data Manipulation Language Triggers.
Det är vanligtvis bundet till ett bord och avfyras automatiskt. Du kan inte uttryckligen ringa någon trigger.
Typer och klassificeringar av Trigger
I SQL Server finns det två kategorier av triggers: DDL Triggers och DML Triggers.
DDL Triggers avfyras som svar på händelserna i Data Definition Language (DDL). Dessa händelser motsvarar främst Transact-SQL-uttalanden som börjar med nyckelorden CREATE
, ALTER
och DROP
.
DML-utlösare avfyras som svar på händelser i Data Manipulation Language (DML). Dessa händelser motsvarar Transact-SQL-uttalanden som börjar med nyckelorden INSERT
, UPDATE
och DELETE
.
DML-triggers klassificeras i två huvudtyper:
After Triggers (för triggers)
- EFTER INSERT Trigger.
- EFTER UPPDATERING Trigger.
- EFTER DELETE Trigger.
Istället för triggers
- INSTEAD OF INSERT Trigger.
- INSTEAD AV UPPDATERING Trigger.
- INSTEAD OF DELETE Trigger.
DML Triggers
DML-utlösare avfyras som svar på dml-uttalanden ( insert
, update
eller delete
).
En dml-trigger kan skapas för att adressera en eller flera dml-händelser för en enda tabell eller vy. Detta innebär att en enstaka dml-trigger kan hantera infogning, uppdatering och radering av poster från en specifik tabell eller vy, men i kan bara hantera data som ändras i den enda tabellen eller vyn.
DML Triggers ger åtkomst till inserted
och deleted
tabeller som innehåller information om data som påverkades av inlägget, uppdatera eller radera uttalandet som avfyrde utlösaren.
Observera att DML-triggers är uttalande baserade, inte radbaserade. Detta innebär att om uttalandet utförs mer än en rad kommer de infogade eller raderade tabellerna att innehålla mer än en rad.
Exempel:
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
Alla exemplen ovan lägger till poster i tblAudit när en post läggs till, raderas eller uppdateras i tblSomething.