Was sind Trigger in SQL und wie implementiert man sie?
Ein Trigger in SQL ist ein prozeduraler Code, der automatisch als Reaktion auf bestimmte Ereignisse in einer bestimmten Tabelle ausgeführt wird. Es ist wichtig zu verstehen, wie diese kleinen Codes einen so großen Unterschied in der Datenbankleistung machen. In diesem Artikel lernen Sie, wie man Trigger zusammen mit Beispielen implementiert.
Die folgenden Themen werden in diesem Artikel behandelt:
- Was ist ein Trigger?
- Syntax und Beispiel
- Bedienung in Triggern
- Vorteil und Nachteil
Was ist ein Trigger?
Trigger sind die SQL-Codes, die als Reaktion auf bestimmte Ereignisse in einer bestimmten Tabelle automatisch ausgeführt werden. Diese werden verwendet, um die Integrität der Daten zu erhalten. Ein Trigger in SQL funktioniert ähnlich wie ein Trigger in der realen Welt. Wenn zum Beispiel der Abzug einer Pistole gezogen wird, wird eine Kugel abgefeuert. Wir alle kennen das, aber wie hängt das mit Triggern in SQL zusammen? Um dies zu verstehen, lassen Sie uns eine hypothetische Situation betrachten.
John ist der Marketingbeauftragte in einem Unternehmen. Wenn die Daten eines neuen Kunden in die Datenbank des Unternehmens eingegeben werden, muss er jedem neuen Kunden eine Willkommensnachricht schicken. Wenn es sich um einen oder zwei Kunden handelt, kann John dies manuell tun, aber was ist, wenn es sich um mehr als tausend Kunden handelt? Nun, in einem solchen Szenario kommen Trigger ins Spiel.
So kann John jetzt ganz einfach einen Trigger erstellen, der automatisch eine Willkommens-E-Mail an die neuen Kunden sendet, sobald deren Daten in die Datenbank eingegeben wurden. Ich hoffe, Sie haben die Einführung von Triggern in SQL verstanden.
Denken Sie immer daran, dass es nicht zwei Trigger mit ähnlichem Aktionszeitpunkt und Ereignis für eine Tabelle geben kann. Zum Beispiel können wir nicht zwei BEFORE UPDATE-Trigger für eine Tabelle haben. Aber wir können einen BEFORE UPDATE- und einen BEFORE INSERT-Trigger oder einen BEFORE UPDATE- und einen AFTER UPDATE-Trigger haben.
Bevor wir weiter in die Grundlagen von Triggern eintauchen, empfehle ich Ihnen, die Konzepte der SQL-Grundlagen und der Normalisierung zu verstehen, damit Sie einen besseren Überblick über Trigger in SQL bekommen.
Syntax und Beispiel
Lassen Sie uns nun einen Blick auf die Syntax eines Triggers werfen.
Create Trigger Trigger_Name(Before | After) on
Lassen Sie mich nun diese Syntax aufschlüsseln und jeden einzelnen Teil im Detail erklären.
- Trigger erstellen
Diese beiden Schlüsselwörter werden verwendet, um anzugeben, dass ein Trigger-Block deklariert wird. - Trigger_Name
Sie geben den Namen des Triggers an. Der Triggername muss eindeutig sein und sollte sich nicht wiederholen. - ( Before | After )
Dies gibt an, wann der Trigger ausgeführt werden soll. Es gibt den Zeitpunkt an, zu dem der Trigger ausgelöst wird, d. h. entweder vor dem laufenden Ereignis oder danach.
- Vor Trigger werden verwendet, um Datensatzwerte zu aktualisieren oder zu validieren, bevor sie in der Datenbank gespeichert werden.
- Nach-Trigger werden verwendet, um auf Feldwerte zuzugreifen, die vom System festgelegt wurden, und um Änderungen in anderen Datensätzen zu bewirken. Die Datensätze, die den After-Trigger aktivieren, sind schreibgeschützt. Wir können den After-Trigger nicht verwenden, wenn wir einen Datensatz aktualisieren wollen, da dies zu einem Nur-Lese-Fehler führt.
- Dies sind die DML-Operationen und wir können jede von ihnen in einem bestimmten Trigger verwenden.
- on
Wir müssen den Tabellennamen angeben, auf den der Trigger angewendet wird. Vergessen Sie nicht, das Schlüsselwort on zu verwenden und stellen Sie außerdem sicher, dass die ausgewählte Tabelle in der Datenbank vorhanden ist.
-
- Trigger auf Zeilenebene wird ausgeführt, bevor oder nachdem sich ein Spaltenwert einer Zeile ändert
- Trigger auf Spaltenebene wird ausgeführt, bevor oder nachdem sich die angegebene Spalte ändert
-
Er besteht aus Abfragen, die ausgeführt werden müssen, wenn der Trigger aufgerufen wird.
So, das war alles über einen einfachen Trigger. Wir können aber auch einen verschachtelten Trigger erstellen, der Multi-Process-fähig ist. Auch hier ist die Handhabung und das Beenden zum richtigen Zeitpunkt sehr wichtig. Wenn wir den Trigger nicht richtig beenden, kann das zu einer Endlosschleife führen.
Sie fragen sich vielleicht, in welchem Szenario wir den verschachtelten Trigger verwenden können. Anstatt Ihnen eine maßgeschneiderte Antwort zu geben, möchte ich ein Szenario mit Ihnen teilen, das Ihnen helfen wird, den verschachtelten Trigger besser zu verstehen. In Fortsetzung des früheren Szenarios hat John für jeden neuen Kunden, der in die Datenbank des Unternehmens aufgenommen wurde, eine E-Mail gesendet. Was ist nun, wenn er die Anzahl der Kunden, an die die E-Mail gesendet wurde, im Auge behalten möchte? Jetzt muss John einen verschachtelten Trigger erstellen, um die Anzahl zusammen mit dem Senden einer E-Mail zu verfolgen.
So, das war alles über die Syntax von Triggern, lassen Sie uns nun versuchen, ein Beispiel für Trigger in SQL zu implementieren.
Beispiel für Trigger:
Im folgenden Trigger versuchen wir, den Prozentsatz des Studenten zu berechnen, sobald seine Details in der Datenbank aktualisiert werden.
CREATE TRIGGER sample_triggerbefore INSERTON studentFOR EACH ROWSET new.total = new.marks/6;
Hier bezieht sich das Schlüsselwort „NEW“ auf die Zeile, die betroffen ist.
Operationen in Triggern
Wir können viele Operationen mit Triggern durchführen. Einige mögen einfach und andere etwas komplex sein, aber wenn wir einmal die Abfrage durchgehen, ist es leicht zu verstehen.
- Einen Trigger löschen
DROP TRIGGER trigger name;
- Einen Trigger anzeigen
Der folgende Code zeigt alle vorhandenen Trigger an.
SHOW TRIGGERS;
Der unten stehende Code zeigt alle Trigger an, die in einer bestimmten Datenbank vorhanden sind.
SHOW TRIGGERSIN database_name;
Beispiel:
SHOW TRIGGERS IN edureka;
Im obigen Beispiel werden alle Trigger angezeigt, die in der Datenbank mit dem Namen Edureka vorhanden sind.
Wir sehen uns auch einige Hauptvarianten der Trigger an, nämlich Before insert und After insert. Einen Trigger haben wir bereits im Beispiel gesehen. Aber mit Hilfe der Tabelle können wir sehen, wie das genau funktioniert.
Da wir bereits verstanden haben, wie man einen Trigger erstellt, wollen wir nun die beiden Varianten des Triggers verstehen, nämlich Vor dem Einfügen und Nach dem Einfügen.
Um sie zu implementieren, erstellen wir eine Studententabelle mit verschiedenen Spalten wie unten gezeigt:
Wenn wir nun diese Abfrage ausführen, erhalten wir die folgende Tabelle.
Lassen Sie uns versuchen, die erste Variante zu verwenden, d.h. Vor dem Einfügen
CREATE TRIGGER calculatebefore INSERT ON studentFOR EACH ROWSET new.marks = new.marks+100;
Hier wird beim Einfügen von Daten in die Studententabelle automatisch der Trigger aufgerufen. Der Trigger fügt der Spalte „Noten“ in der Spalte „Schüler“ den Wert 100 hinzu.
Nun lassen Sie uns die zweite Variante verwenden, d.h. „Nach dem Einfügen“
Um diese Variante zu verwenden, benötigen wir eine weitere Tabelle, nämlich „Prozent“, in der der Trigger die Ergebnisse speichern wird. Verwenden Sie den folgenden Code, um die Tabelle „Prozent“ zu erstellen.
create table Final_mark(per int );
Nun lassen Sie uns den After-Insert-Trigger verwenden
CREATE TRIGGER total_markafter insert ON studentFOR EACH ROWinsert into Final_mark values(new.marks);
Hier wird, wenn wir Daten in die Tabelle einfügen, der Trigger „total_mark“ das Ergebnis in der Tabelle „Final_mark“ speichern.
Das war alles über die Funktionsweise von Triggern, lassen Sie uns nun weitermachen und ihre Vor- und Nachteile betrachten.
Vor- und Nachteile von Triggern
Vorteile
- Erzwingen von Sicherheitsfreigaben für die Tabelle, die in der Datenbank vorhanden sind
- Trigger bieten eine weitere Möglichkeit, die Integrität von Daten zu prüfen
- Ungültigen Austauschen entgegenwirken
- Trigger behandeln Fehler aus der Datenbankschicht
- Normalerweise können Trigger nützlich sein, um die Datenänderungen in Tabellen zu überprüfen
- Trigger bieten eine alternative Möglichkeit, geplante Aufgaben auszuführen. Bei der Verwendung von Triggern müssen wir nicht auf die Ausführung der geplanten Ereignisse warten, da die Trigger automatisch vor oder nach einer Änderung der Daten in einer Tabelle aufgerufen werden
Nachteile
- Trigger können nur erweiterte Validierungen bereitstellen, d.h. nicht alle Arten von Validierungen. Für einfache Validierungen können Sie die NOT NULL-, UNIQUE-, CHECK- und FOREIGN KEY-Constraints verwenden
- Trigger können den Overhead der Datenbank erhöhen
- Trigger können schwierig zu beheben sein, da sie automatisch in der Datenbank ausgeführt werden, was für die Client-Anwendungen möglicherweise nicht sichtbar ist
Damit sind wir am Ende dieses Artikels über Trigger in SQL angelangt. Ich hoffe, Sie haben die Konzepte von Triggern verstanden.
Wenn Sie mehr über MySQL erfahren und diese relationale Open-Source-Datenbank kennenlernen möchten, dann besuchen Sie unsere MySQL DBA-Zertifizierungsschulung, die ein von einem Ausbilder geleitetes Live-Training und echte Projekterfahrung beinhaltet. Diese Schulung wird Ihnen helfen, MySQL in der Tiefe zu verstehen und die Beherrschung des Themas zu erreichen.