Heim >php教程 >PHP开发 >Erstellen, Löschen, Ändern und Anzeigen von SQL Server-Triggern

Erstellen, Löschen, Ändern und Anzeigen von SQL Server-Triggern

高洛峰
高洛峰Original
2016-12-14 16:05:191121Durchsuche

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-Transaktion

Ende

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 erstellen

auf Bestellungen

nach dem Einfügen

 as

 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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:SQL Server-TriggerNächster Artikel:SQL Server-Trigger