Microsoft SQL Server
Auslösen
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:
After Trigger (für Trigger)
- After Insert-Auslöser.
- NACH UPDATE-Auslöser.
- NACH DELETE-Auslöser.
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.