So verwenden Sie SQL Server -Trigger

So verwenden Sie SQL Server -Trigger
Auslöser sind spezielle Art von gespeicherten Prozeduren, die als Antwort auf Aktivitäten in SQL Server -Objekten ausgeführt werden. Auslöser werden im Speicher des Systems gespeichert und nur ausgeführt, wenn ein bestimmtes Ereignis auftritt. Im Gegensatz zu normalen gespeicherten Verfahren akzeptieren Trigger keine Parameter und werden weder manuell ausgeführt.

In diesem Artikel werden wir untersuchen.

In SQL Server gibt es drei Haupttypen von Triggern:

  1. DML -Auslöser
  2. DDL -Auslöser
  3. Anmeldeauslöser

Lassen Sie uns diese Auslöser in diesem Leitfaden erkunden.

SQL Server -DML -Auslöser

DML- oder Datenmanipulationssprachlachen Trigger sind Triggertypen, die als Reaktion auf einen Einsatz, Aktualisieren und Löschen von Operationen in einer Tabelle oder Ansicht feuern. DML -Trigger werden ausgeführt, wenn eine gültige Operation ausgeführt wird, ob Zeilen betroffen sind.

Erstellen Sie DML nach Trigger

In SQL Server können Sie einen DML -Trigger mit der Anweisung Create Trigger erstellen.

Erstellen Sie Trigger Schema_Name.Trigger_Name
Auf table_name
Nach [Einfügen, Aktualisieren, Löschen]
ALS
-- Auslöser Code zum Ausführen

Lassen Sie uns die obige Syntax aufschlüsseln:

  1. Schema_Name - Der Name des Schemas, in dem der Abzug gespeichert wird.
  2. Trigger_Name - Name des Abzugs.
  3. TABLE_NAME - Der Name der Tabelle, in der der angegebene Auslöser gelten.
  4. Nach - After -Klausel zum Definieren der Bedingungen, unter denen der Auslöser gelten wird.

Um zu lernen, wie man einen DML -Auslöser erstellt und verwendet, nehmen wir ein praktisches Beispiel.

Erstellen Sie Beispieldatenbank und fügen Sie die Daten ein, wie in den unten angegebenen Abfragen angegeben:

-- Beispieldatenbank erstellen
Datenbankverkauf erstellen;
GEHEN
-- DB schalten;
Verkäufe verwenden;
-- Tabelle erstellen
Tischverkäufe erstellen (
ID int Identität (1,1), nicht der Null -Primärschlüssel,
product_name varchar (50),
Preisgeld,
Menge int
);
-- Beispieldaten einfügen
In den Verkauf einfügen (Product_Name, Preis, Menge)
Werte ('iPhone -Ladegerät', $ 9.99, 10),
('Google Chromecast', $ 59.25, 5),
('PlayStation DualSense Wireless Controller', 69 US -Dollar.00, 100),
('Xbox Series S', $ 322.00, 3),
('Oculus Quest 2', $ 299.50, 7),
('Netgear Nighthawk', 236 US -Dollar.30, 40),
('Redragon S101', $ 35.98, 100),
('Star Wars Action Figur', $ 17.50, 10),
('Mario Kart 8 Deluxe', $ 57.00, 5);

Sobald wir die Beispieldaten haben, können wir fortfahren und einen DML -Auslöser erstellen, um bei einem Aktualisierungsvorgang auf der Tabelle zu feuern.

Betrachten Sie das unten gezeigte Beispiel:

-- Erstellen Sie Tabelle zum Speichern von Update -Historien
Tabelle erstellen modifiziertDate (ID int, DATE_ DATETIME))
GEHEN
-- Trigger erstellen
Erstellen Sie Trigger DBO.update_trigger
Im Angebot
nach dem Update
Nicht zur Replikation
ALS
START
In modifiedDate einfügen
ID auswählen, getDate ()
Von eingefügt
ENDE

Die obige Abfrage erstellt einen Auslöser, der ausbreitet, wenn wir ein Update auf der Tabelle durchführen. Um Trigger zu testen, können wir ein Update als:

-- Tabelle aktualisieren
Aktualisieren Sie den Verkaufssatzpreis = 10 USD.10
Wo id = 1;

Nach der Ausführung können wir überprüfen, ob der Auslöser funktioniert, indem wir die Spalten in der modifizierten Tabelle auswählen.

-- Überprüfen Sie die modifizierte Tabelle
Wählen Sie * aus modifiedDate aus;

In SSMS können Sie die Trigger auf einer Tabelle anzeigen, indem Sie die Option Trigger erweitern:

Anstelle von Triggern erstellen

Die andere Art von DML -Auslöser auf dem SQL -Server ist anstelle von Triggern. Dies sind Art der Trigger, die anstelle der DML -Anweisung ausführen. Wenn wir beispielsweise eine Löschanweisung angeben, können wir die anstelle von Triggern verwenden, um vor der Operation auszuführen.

Die Syntax zum Erstellen eines anstelle von Auslöser ist wie gezeigt:

Erstellen Sie Trigger Schema_Name.Trigger_Name
Auf table_name
anstelle von [einfügen, aktualisieren, löschen]
ALS
-- Aussagen

Beispielsweise erstellt die folgende Abfrage einen Auslöser, der eine Nachricht anzeigt, wenn eine Einfügungsoperation auf der Tabelle durchgeführt wird.

-- erstellen anstelle von Trigger
Erstellen Sie Trigger stattdessen_insert
Im Angebot
anstelle von Einfügen
ALS
START
Wählen Sie "Sie können in dieser Tabelle nicht einfügen" als Fehler einfügen
ENDE
-- Rennen Sie stattdessen_insert Trigger
In den Verkauf einfügen (Product_Name, Preis, Menge)
Werte ('iPhone -Ladegerät', $ 9.99, 10);

Sobald wir die obige Abfrage ausgeführt haben, sollten wir eine Nachricht erhalten, die angibt, dass wir keine Einfügung auf der Tabelle ausführen können.

Fehler
-------------------------------

Sie können nicht in diese Tabelle einfügen

SQL DDL -Auslöser

DDL- oder Datendatendefinitionssprache sind Auslöser, die auf Ereignisse auf den Server oder die Datenbank anstelle einer Tabelle reagieren. DDL -Trigger reagieren auf Ereignisse wie Drop, Grant, verweigern, revoke, aktualisieren Sie Statistiken, Erstellen und Alter.

Erstellen Sie DDL -Trigger

Die Syntax zum Erstellen eines DDL -Triggers ist wie gezeigt:

Erstellen Sie Trigger Trigger_Name
Auf Datenbank | Alle Server
Mit ddl_trigger_parameters
Für Event_type | Event_group
ALS
-- Aussagen

Wir können die Syntax als:

  1. Trigger_Name - eindeutiger Name des Abzugs.
  2. Datenbank oder All Server - Geben Sie an, wo der Auslöser ausgeführt wird. Datenbank, wenn sie in der Datenbank oder auf dem gesamten Server gilt, wenn sie im Serverbereich gilt.
  3. ddl_trigger_parameter - ddl -parameter wie z.
  4. Event_type - Das DDL -Ereignis, das den Auslöser ausfeuert.

Die folgende Beispielabfrage erstellen Sie einen DDL -Auslöser, der ausgelöst wird.

-- Erstellen Sie DDL -Trigger
Erstellen Sie Trigger drop_ddl_trigger
Auf Datenbank
Für drop_table
ALS
START
EventData () auswählen;
ENDE

Sobald wir ein Drop -Ereignis in der Datenbank ausgeführt haben.

Wir können den Abzug testen:

-- Testauslöser
Tischverkäufe;

Die Abfrage sollte XML -Informationen über das Ereignis zurückgeben als:

In SSMS können Sie die Trigger anzeigen, indem Sie die Datenbankauslöser unter Programmierbarkeit in Ihrer Zieldatenbank erweitern.

Trigger aktivieren/deaktivieren

Mit SQL Server können Sie Trigger aktivieren und deaktivieren. Verwenden Sie die Abfrage als:

Aktivieren Sie Trigger update_trigger beim Verkauf;

Wobei update_trigger den Auslösernamen und den Verkauf darstellen.

Sie können auch alle Auslöser auf einem Tisch aktivieren wie:

Aktivieren Sie alle auf table_name aus

Verwenden Sie die Abfrage, um den Datenbankauslöser zu aktivieren:

Aktivieren Sie Trigger Drop_ddl_trigger bei Verkauf;

Hier repräsentiert drop_ddl_trigger den Auslösernamen und den Verkauf der Datenbank.

Verwenden Sie die Abfrage, um alle Datenbankauslöser zu aktivieren:

Aktivieren Sie den Verkauf auszulösen

Um eine Tabelle oder einen Datenbankauslöser zu deaktivieren, ersetzen Sie das Schlüsselwort aktivieren durch Deaktivieren ☺️.

Abzug löschen

Um einen Auslöser zu entfernen, können Sie die Drop -Anweisung wie gezeigt verwenden:

Drop -Trigger, wenn existiert Trigger_name;

SQL Server zeigen alle Trigger an

Verwenden Sie die Abfrage wie gezeigt, um alle Trigger in einer SQL -Serverinstanz anzuzeigen:

Wählen Sie Name, Type_DESC, IS_DISABED, IS_INSTEAD_OF_TRIGGERFUCH FÜR SYS.Trigger, wo Typ = 'tr'

Die Abfrage sollte alle Auslöser in der SQL -Serverinstanz zurückgeben als:

SQL Server -Anmeldeauslöser

Anmeldeauslöser sind Triggertypen, die ausgeführt werden, wenn eine Anmeldeaktivität auf dem Server auftritt. Diese Arten von Triggern werden nach einer erfolgreichen Authentifizierung ausgeführt, jedoch vor dem Erstellen einer Benutzersitzung. Da sie verwendet werden, um die Anmeldebauaktivität zu verarbeiten, erstellen wir sie auf Serverebene, wie im folgenden Beispiel gezeigt:

VORSICHT: Der folgende Auslöser kann zukünftige Anmeldungen am Server verhindern. Stellen Sie sicher, dass Sie sich vor dem Anmeldung löschen.

VORSICHT - EuenEuenEuenEuenEuenEuenEuenEuenEuenEuenEuenEuenEuenEuenEuenEuenEuenEuenEuenEuen.

-- Machen Sie einen Auslöser an
Erstellen Sie Trigger login_tg
Auf dem gesamten Server
Für Anmeldung als
START
Wählen Sie 'einen Trigger nach Anmeldung' als [Nachricht]
ENDE

Der Auslöser zeigt eine Nachricht an, wenn sich der Benutzer auf dem Server anmeldet.

Abschluss

In diesem Leitfaden haben Sie verschiedene Arten von Triggern verstanden, wie man das Erstellen, Aktivieren, Deaktivieren, Löschen und Ansehen auf dem SQL -Server erstellt, aktiviert, löscht und anzeigt.