Suche…


Einführung

Ein Trigger ist ein spezieller Typ einer gespeicherten Prozedur, die automatisch ausgeführt wird, nachdem ein Ereignis aufgetreten ist. Es gibt zwei Arten von Auslösern: Datendefinitionssprachenauslöser und Datenmanipulationssprachauslöser.

Es ist normalerweise an einen Tisch gebunden und wird automatisch ausgelöst. Sie können keinen Auslöser explizit aufrufen.

Typen und Klassifizierungen des Auslösers

In SQL Server gibt es zwei Kategorien von Triggern: DDL-Trigger und DML-Trigger.

DDL-Trigger werden als Reaktion auf DDL-Ereignisse (Data Definition Language) ausgelöst. Diese Ereignisse entsprechen im Wesentlichen den Transact-SQL-Anweisungen, die mit den Schlüsselwörtern CREATE , ALTER und DROP .

DML-Trigger werden als Reaktion auf DML-Ereignisse (Data Manipulation Language) ausgelöst. Diese Ereignisse entsprechen Transact-SQL-Anweisungen, die mit den Schlüsselwörtern INSERT , UPDATE und DELETE .

DML-Trigger werden in zwei Haupttypen unterteilt:

  1. After Trigger (für Trigger)

    • After Insert-Auslöser.
    • NACH UPDATE-Auslöser.
    • NACH DELETE-Auslöser.
  2. Anstelle von Auslösern

    • INSTEAD OF INSERT-Auslöser.
    • STATT UPDATE Auslöser.
    • Anstelle von DELETE Trigger.

DML-Trigger

DML-Trigger werden als Antwort auf dml-Anweisungen ausgelöst ( insert , update oder delete ).
Ein dml-Auslöser kann erstellt werden, um ein oder mehrere dml-Ereignisse für eine einzelne Tabelle oder Ansicht zu behandeln. Dies bedeutet, dass ein einzelner dml-Auslöser das Einfügen, Aktualisieren und Löschen von Datensätzen aus einer bestimmten Tabelle oder Ansicht übernehmen kann. In können jedoch nur Daten behandelt werden, die in dieser einzelnen Tabelle oder Ansicht geändert werden.

DML-Trigger bieten Zugriff auf inserted und deleted Tabellen, die Informationen zu den Daten enthalten, die von der Einfüge-, Aktualisierungs- oder Löschanweisung, die den Trigger ausgelöst hat, betroffen waren / werden.

Beachten Sie, dass DML-Trigger auf Anweisungen und nicht auf Zeilen basieren. Das bedeutet, dass, wenn die Anweisung mehr als eine Zeile ausgeführt hat, die eingefügten oder gelöschten Tabellen mehr als eine Zeile enthalten.

Beispiele:

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

In allen obigen Beispielen werden Datensätze zu tblAudit hinzugefügt, wenn ein Datensatz in tblSomething hinzugefügt, gelöscht oder aktualisiert wird.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow