1: Ein Trigger ist eine spezielle gespeicherte Prozedur, die nicht explizit aufgerufen werden kann, sondern automatisch aktiviert wird, wenn ein Datensatz in die Tabelle eingefügt, aktualisiert oder gelöscht wird. Daher können Trigger verwendet werden, um komplexe Integritätsbeschränkungen für Tabellen zu implementieren.
Zwei: SQL Server erstellt für jeden Trigger zwei dedizierte Tabellen: Eingefügte Tabelle und Gelöschte Tabelle. Diese beiden Tabellen werden vom System verwaltet und sind im Speicher und nicht in der Datenbank vorhanden. Die Struktur dieser beiden Tabellen ist immer dieselbe wie die Struktur der Tabelle, auf die der Trigger wirkt. Nach Abschluss der Triggerausführung werden auch die beiden mit dem Trigger verknüpften Tabellen gelöscht.
In der Tabelle „Gelöscht“ werden alle Zeilen gespeichert, die aufgrund der Ausführung einer Lösch- oder Aktualisierungsanweisung aus der Tabelle gelöscht werden sollen.
Die Inserted-Tabelle speichert alle Zeilen, die aufgrund der Ausführung der Insert- oder Update-Anweisung in die Tabelle eingefügt werden sollen.
Drei: Anstelle von und Nach-Triggern
SQL Server2000 bietet zwei Trigger: Anstelle von und Nach-Triggern. Der Unterschied zwischen diesen beiden Triggern besteht darin, dass sie auf die gleiche Weise aktiviert werden:
Anstelle von Triggern wird die T-SQL-Anweisung verwendet, die die Ausführung des Triggers bewirkt. Zusätzlich zu Tabellen können Anstelle von Triggern auch Ansichten verwendet werden, um die Aktualisierungsvorgänge zu erweitern, die Ansichten unterstützen können.
Der After-Trigger wird nach einer Insert-, Update- oder Deleted-Anweisung ausgeführt und Aktionen wie die Einschränkungsprüfung finden statt, bevor der After-Trigger aktiviert wird. After-Trigger können nur für Tabellen verwendet werden.
Jede Änderungsaktion (Einfügen, Aktualisieren und Löschen) einer Tabelle oder Ansicht kann einen Anstelle-Trigger haben, und jede Änderungsaktion einer Tabelle kann mehrere After-Trigger haben.
Viertens: Ausführungsprozess auslösen
Wenn eine Anweisung „Einfügen“, „Aktualisieren“ oder „Löschen“ gegen eine Einschränkung verstößt, wird der Nach-Trigger nicht ausgeführt, da die Prüfung auf die Einschränkung im Nach-Trigger erfolgt ist, bevor er aktiviert wird . Daher kann der After-Trigger die Einschränkungen nicht überschreiten.
Stattdessen kann ein Auslöser anstelle der Aktion ausgeführt werden, die ihn ausgelöst hat. Es wird ausgeführt, wenn die eingefügte Tabelle und die gelöschte Tabelle gerade erstellt wurden und keine anderen Vorgänge ausgeführt wurden. Da der Statt-Trigger vor der Einschränkung ausgeführt wird, kann er eine gewisse Vorverarbeitung der Einschränkung durchführen.
Fünf: Verwenden Sie T-SQL-Anweisungen, um Trigger zu erstellen
Die grundlegenden Anweisungen lauten wie folgt:
create trigger trigger_name
on {table_name |.
{für |. Nach |. Anstelle von }
[insert, update,delete ]
as
sql_statement
Sechs: Löschen Trigger:
Die grundlegende Anweisung lautet wie folgt:
Drop Trigger Trigger_Name
Sieben: Vorhandene Trigger in der Datenbank anzeigen:
– Vorhandene Trigger anzeigen in der Datenbank
Verwenden Sie jxcSoftware
Los
Wählen Sie * aus Sysobjects aus, wobei xtype='TR'
-- Einen einzelnen Trigger anzeigen
exec sp_helptext 'Triggername'
Acht: Trigger ändern:
Die grundlegende Anweisung lautet wie folgt:
Alter trigger trigger_name
on {table_name |. view_name}
{for | 9: Verwandte Beispiele:
1: Erstellen Sie beim Einfügen eines Bestelldatensatzes in die Tabelle „Bestellungen“, ob der Status der Warentabelle 1 ist (organisieren). Fügen Sie es in die Tabelle „Bestellungen“ ein.
auslösende Bestellung einfügen
bei Bestellungen
nach dem Einfügen
wie
wenn (Status aus Waren auswählen, eingefügt
wobei „goods.name=inserted.goodsname)=1“
begin
print „Die Ware wird bearbeitet“
print „Die Bestellung kann nicht bestätigt werden“
Rollback-Transaktion – Rollback, Hinzufügen vermeiden
Ende
2: Erstellen Sie einen Einfügungsauslöser in der Tabelle „Bestellungen“ und reduzieren Sie beim Hinzufügen einer Bestellung die entsprechenden Produktdatensätze in den Waren Tisch auf Lager.
Trigger orderinsert1 erstellen
auf Bestellungen
nach dem Einfügen
als
Warensatz aktualisieren=storage-inserted.quantity
aus Waren, eingefügt
wo
Waren.name=insertiert. Warenname
3: Erstellen Sie einen Löschauslöser in der Warentabelle, um die Warentabelle zu implementieren und die Kaskadenlöschung der Tabelle „Bestellungen“.
Auslöser für Warenlöschung erstellen
für Waren
nach dem Löschen
als
aus Bestellungen löschen
wobei Warenname drin ist
(Name aus „Gelöscht“ auswählen)
4: Erstellen Sie einen Aktualisierungsauslöser in der Tabelle „Bestellungen“ und überwachen Sie die Spalte „Bestelldatum“ (OrderDate) der Tabelle „Bestellungen“, damit sie nicht manuell geändert werden kann.
Trigger „orderdateupdate“
für Bestellungen
nach der Aktualisierung
als
wenn die Aktualisierung (Bestelldatum)
beginnt
Raiserror('orderdate failed to be changes',10,1)Rollback-TransaktionEnde 5: Erstellen Sie einen Einfügetrigger in der Orders-Tabelle, um Stellen Sie sicher, dass der in die Tabelle eingefügte Produktname in der Warentabelle vorhanden sein muss. Trigger orderinsert3 erstellenauf Bestellungennach dem Einfügenas
if (select count(*) from items,inserted where weres.name=inserted.goodsname)=0
begin
print ' no enter in Waren für diese Bestellung'
Rollback-Transaktion
Ende
6: Erstellen Sie einen Einfügetrigger in der Tabelle „Bestellungen“, um sicherzustellen, dass die in die Tabelle „Bestellungen“ eingefügten Produktinformationen hinzugefügt werden die Order-Tabelle
alter trigger addOrder
on Orders
for insert
as
insert into Order
Wählen Sie eingefügt. Id, eingefügt.goodName, eingefügt.Nummer aus eingefügt