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:

  1. After Triggers (voor triggers)

    • NA PLAATS Trekker.
    • NA UPDATE Trigger.
    • NA VERWIJDEREN Trigger.
  2. 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.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow