Trigger
Einführung in Trigger:
Ein Trigger ist eine spezielle gespeicherte Prozedur, deren Ausführung nicht durch ein Programm aufgerufen oder manuell gestartet wird, sondern durch ein Ereignis (Einfügen, Löschen, Aktualisieren) wird für eine Tabelle ausgeführt. Auslöser werden häufig verwendet, um Datenintegritätsbeschränkungen und Geschäftsregeln zu stärken. Meiner Meinung nach ist ein Trigger eigentlich ein Ereignis, genau wie in C# wird durch Klicken auf eine Schaltfläche der entsprechende Vorgang ausgelöst.
Klassifizierung von Triggern:
(1) DML-Trigger (Data Manipulation Language): bedeutet, dass der Trigger aktiviert wird, wenn ein DML-Ereignis in der Datenbank auftritt. DML-Ereignisse beziehen sich auf Einfüge-, Aktualisierungs- und Löschanweisungen, die Daten in Tabellen oder Ansichten ändern.
(2) DDL-Trigger (Data Definition Language): Wird aktiviert, wenn ein DDL-Ereignis auf dem Server oder in der Datenbank auftritt. Das DDL-Ereignis bezieht sich auf die Anweisungen zum Erstellen, Ändern und Löschen in der Tabelle oder im Index > (3) Anmeldetrigger: Wird ausgelöst, wenn sich ein Benutzer bei einer SQL SERVER-Instanz anmeldet, um eine Sitzung aufzubauen.
In SQL SERVER 2008 werden bei der Implementierung von DML-Triggern zwei logische Tabellen DELETED und INSERTED verwendet Datenbankserver. Die Struktur der DELETED- und INSERED-Tabellen ist dieselbe wie die Struktur der Datentabelle, in der der Trigger ausgeführt wird: Die INSERED-Tabelle wird zum Speichern verwendet die Datensätze, die Sie nach dem Ausführen der Anweisungen zum Einfügen, Aktualisieren und Löschen aktualisieren. Wenn Sie beispielsweise ein Datenelement einfügen, wird der Datensatz in die Tabelle INSERTED eingefügt: Die Tabelle wird zum Speichern der von Ihnen erstellten Triggertabelle verwendet Wenn Ihre ursprüngliche Tabelle beispielsweise drei Daten enthält, können wir diese beiden temporären Daten verwenden Tabelle zum Testen der Auswirkung bestimmter Datenänderungen und zum Festlegen der Bedingungen für Triggeroperationen
Syntax
Trigger erstellen
Trigger löschen:
Trigger ändern:CREATE TRIGGER 触发器名称 ON 表名 { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ DELETE ] [ , ] [UPDATE ] } AS SQL 语句 [ ... n ]Aktivieren und deaktivieren:
DROP TRIGGER 触发器名 [ , ... n ]Erinnerung und Schutz:
ALTER TRIGGER 触发器名称 ON 表名 { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ DELETE ] [ , ] [UPDATE ] } AS SQL 语句 [ ... n ]Beispiel
disable trigger trigDB on database --禁用触发器 enable trigger trigDB on database --开启触发器
print '删除了触发器***' raiserror('数据一致性验证',16,1) rollback transaction
Erstellt in S-Tabelle UPDATE-Trigger:
Es ist verboten, die Datensätze von Schülern mit nicht bestandenen Noten in der SC-Tabelle zu löschen:
Create trigger tri_Updates on s for update as print 'the table s was updated'
CREATE TRIGGER tri_del_grade ON SC FOR DELETE AS IF EXISTS(SELECT * FROM DELETED WHERE Grade < 60) ROLLBACK