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:

  1. After Triggers (för triggers)

    • EFTER INSERT Trigger.
    • EFTER UPPDATERING Trigger.
    • EFTER DELETE Trigger.
  2. 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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow