Microsoft SQL Server
Op gang brengen
Zoeken…
Invoering
Een trigger is een speciaal type opgeslagen procedure, die automatisch wordt uitgevoerd nadat een gebeurtenis plaatsvindt. Er zijn twee soorten triggers: Data Definition Language Triggers en Data Manipulation Language Triggers.
Het is meestal gebonden aan een tafel en wordt automatisch geactiveerd. U kunt niet expliciet een trigger aanroepen.
Typen en classificaties van Trigger
In SQL Server zijn er twee categorieën triggers: DDL-triggers en DML-triggers.
DDL-triggers worden geactiveerd als reactie op DDL-gebeurtenissen (Data Definition Language). Deze gebeurtenissen komen voornamelijk overeen met Transact-SQL-instructies die beginnen met de trefwoorden CREATE
, ALTER
en DROP
.
DML-triggers worden geactiveerd in reactie op Data Manipulation Language (DML) -gebeurtenissen. Deze gebeurtenissen komen overeen met Transact-SQL-instructies die beginnen met de trefwoorden INSERT
, UPDATE
en DELETE
.
DML-triggers zijn onderverdeeld in twee hoofdtypen:
After Triggers (voor triggers)
- NA PLAATS Trekker.
- NA UPDATE Trigger.
- NA VERWIJDEREN Trigger.
In plaats van triggers
- IN PLAATS VAN INVOEGING Trekker.
- IN PLAATS VAN UPDATE Trigger.
- IN PLAATS VAN VERWIJDER Trigger.
DML-triggers
DML-triggers worden geactiveerd als reactie op dml-instructies ( insert
, update
of delete
).
Een dml-trigger kan worden gemaakt om een of meer dml-gebeurtenissen voor een enkele tabel of weergave aan te pakken. Dit betekent dat een enkele dml-trigger overweg kan met het invoegen, bijwerken en verwijderen van records uit een specifieke tabel of weergave, maar in kan alleen omgaan met gegevens die op die enkele tabel of weergave worden gewijzigd.
DML-triggers bieden toegang tot inserted
en deleted
tabellen met informatie over de gegevens waarop de invoeg-, update- of verwijderingsinstructie die de trigger heeft geactiveerd heeft / zal worden beïnvloed.
Merk op dat DML-triggers gebaseerd zijn op een instructie, niet op een rij. Dit betekent dat als de instructie meer dan één rij heeft uitgevoerd, de ingevoegde of verwijderde tabellen meer dan één rij zullen bevatten.
Voorbeelden:
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
Alle bovenstaande voorbeelden voegen records toe aan tblAudit wanneer een record wordt toegevoegd, verwijderd of bijgewerkt in tblSomething.