Database
 sql >> Datenbank >  >> RDS >> Database

Was sind Trigger in SQL und wie werden sie implementiert?

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 erfahren Sie, wie Sie Trigger zusammen mit Beispielen implementieren.

Die folgenden Themen werden in diesem Artikel behandelt:

  • Was ist ein Auslöser?
  • Syntax und Beispiel
  • Operation in Triggern
  • Vorteil und Nachteil

Was ist ein Auslöser?

Trigger sind die SQL-Codes, die automatisch als Reaktion auf bestimmte Ereignisse in einer bestimmten Tabelle ausgeführt werden. Diese werden verwendet, um die Integrität der Daten zu wahren. Ein Trigger in SQL funktioniert ähnlich wie ein realer Trigger. Wenn zum Beispiel der Pistolenabzug gezogen wird, wird eine Kugel abgefeuert. Wir alle wissen das, aber wie hängt das mit Triggern in SQL zusammen? Um dies zu verstehen, betrachten wir eine hypothetische Situation.

John ist Marketingleiter in einem Unternehmen. Wenn die Daten eines neuen Kunden in die Datenbank des Unternehmens eingegeben werden, muss er die Willkommensnachricht an jeden neuen Kunden senden. Wenn es sich um einen oder zwei Kunden handelt, kann John dies manuell tun, aber was ist, wenn die Anzahl mehr als tausend beträgt? Nun, in solchen Szenarien sind Trigger praktisch.

So kann John jetzt ganz einfach einen Auslöser erstellen, der automatisch eine Willkommens-E-Mail an die neuen Kunden sendet, sobald ihre Daten in die Datenbank eingegeben wurden. Ich hoffe also, Sie sind mit der Einführung von Triggern in SQL klar.

Denken Sie immer daran, dass es für einen Tisch nicht zwei Trigger mit ähnlicher Aktionszeit und ähnlichem Ereignis geben kann. Beispielsweise können wir nicht zwei BEFORE UPDATE-Trigger für eine Tabelle haben. Aber wir können ein BEFORE UPDATE haben und ein BEFORE INSERT Auslöser oder ein BEFORE UPDATE und ein NACH UPDATE auslösen.

Bevor wir weiter in die Grundlagen von Triggern eintauchen, würde ich vorschlagen, dass Sie die Konzepte von SQL-Grundlagen und Normalisierung verstehen, damit Sie Trigger in SQL besser in den Griff bekommen.

Syntax und Beispiel

Sehen wir uns nun die Syntax eines Triggers an.

Create Trigger Trigger_Name
(Before | After)  [ Insert | Update | Delete]
on [Table_Name]
[ for each row | for each column ]
[ trigger_body ]

Lassen Sie mich nun diese Syntax aufschlüsseln und jeden einzelnen Teil im Detail erklären.

  • Auslöser erstellen
    Diese beiden Schlüsselwörter werden verwendet, um anzugeben, dass ein Triggerblock deklariert wird.
  • Auslösername
    Es gibt den Namen des Triggers an. Der Triggername muss eindeutig sein und darf sich nicht wiederholen.
  • ( Vorher | Nach )
    Dies gibt an, wann der Trigger ausgeführt wird. Es teilt uns den Zeitpunkt mit, zu dem der Trigger ausgelöst wird, d. h. entweder vor dem laufenden Ereignis oder danach.
  • Vor Triggern werden verwendet, um Datensatzwerte zu aktualisieren oder zu validieren, bevor sie in der Datenbank gespeichert werden.
  • Nach Triggern werden verwendet, um auf Feldwerte zuzugreifen, die vom System gesetzt werden, 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 möchten, da dies zu einem Nur-Lese-Fehler führt.
  • [ Einfügen | Aktualisieren | Löschen ]
    Dies sind die DML-Operationen und wir können jede davon in einem gegebenen Trigger verwenden.
  • auf [ Tabellenname ]
    Wir müssen den Tabellennamen angeben, auf den der Trigger angewendet wird. Vergessen Sie nicht, on zu verwenden Schlüsselwort und stellen Sie außerdem sicher, dass die ausgewählte Tabelle in der Datenbank vorhanden ist.
  • [ für jede Zeile | für jede Spalte ]
    1. Trigger auf Zeilenebene wird vor oder nach jedem Spaltenwert einer Zeile ausgeführt Änderungen
    2. Column Level Trigger wird vor oder nach der angegebenen Spalte ausgeführt Änderungen
  • [ trigger_body]
    Es besteht aus Abfragen, die ausgeführt werden müssen, wenn der Trigger aufgerufen wird.

Also drehte sich alles um einen einfachen Auslöser. Wir können aber auch einen verschachtelten Trigger erstellen, der mehrere Prozesse ausführen kann. Es ist auch sehr wichtig, damit umzugehen und es zum richtigen Zeitpunkt zu beenden. Wenn wir den Trigger nicht richtig beenden, kann dies 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, lassen Sie mich ein Szenario mit Ihnen teilen, das Ihnen helfen wird, den verschachtelten Trigger besser zu verstehen. Als Fortsetzung des vorherigen Szenarios schickte John eine E-Mail für jeden neuen Kunden, der der Datenbank des Unternehmens hinzugefügt wurde. Was ist nun, wenn er die Anzahl der Kunden verfolgen möchte, an die die E-Mail gesendet wurde? Jetzt muss John einen verschachtelten Trigger erstellen, um die Anzahl zusammen mit dem Senden einer E-Mail zu verfolgen.

Das war also alles über die Syntax von Triggern, versuchen wir nun, ein Beispiel für Trigger in SQL zu implementieren.

Beispiel für Trigger:

Im unteren Trigger versuchen wir, den Prozentsatz des Schülers zu berechnen, sobald seine Daten in der Datenbank aktualisiert werden.

CREATE TRIGGER sample_trigger
before INSERT
ON student
FOR EACH ROW
SET new.total = new.marks/6;

Hier das „NEUE“ Schlüsselwort bezieht sich auf die betroffene Zeile.

Operationen in Triggern

Wir können viele Operationen mit Triggern ausführen. Einige mögen einfach sein und andere ein wenig komplex, aber wenn wir die Abfrage einmal durchgehen, ist sie leicht zu verstehen.

  • DROP A Trigger
DROP TRIGGER trigger name;
  • Auslöser anzeigen

Der folgende Code zeigt alle vorhandenen Trigger an.

SHOW TRIGGERS;

Der folgende Code zeigt alle Trigger an, die in einer bestimmten Datenbank vorhanden sind.

SHOW TRIGGERS
IN 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 im Beispiel schon gesehen. Aber mit Hilfe der Tabelle sehen wir mal, wie das genau funktioniert.

Da wir bereits verstanden haben, wie man einen Trigger erstellt, wollen wir uns nun die beiden Varianten des Triggers erklären, nämlich Before insert und After insert. Um sie zu implementieren, erstellen wir eine Schülertabelle mit verschiedenen Spalten, wie unten gezeigt:

CREATE TABLE Student(
studentID INT NOT NULL AUTO_INCREMENT,
FName VARCHAR(20),
LName VARCHAR(20),
Address VARCHAR(30),
City VARCHAR(15),
Marks INT,
PRIMARY KEY(studentID)
);

Wenn wir nun diese Abfrage ausführen, erhalten wir die folgende Tabelle.

Lassen Sie uns versuchen, die erste Variante zu verwenden, d. h. Before Insert

CREATE TRIGGER calculate
before INSERT 
ON student
FOR EACH ROW
SET new.marks = new.marks+100;

Wenn wir hier Daten in die Schülertabelle einfügen, wird automatisch der Trigger aufgerufen. Der Trigger fügt 100 zur Spalte „Noten“ in die Spalte „Schüler“ hinzu.

Lassen Sie uns nun die zweite Variante verwenden, d. h. Nachher Einfügen

Um diese Variante zu verwenden, benötigen wir eine weitere Tabelle, d. h. Prozent, wo der Trigger die Ergebnisse speichert. Verwenden Sie den folgenden Code, um die Prozenttabelle zu erstellen.

create table Final_mark(
per int );

Lassen Sie uns nun den After-Insert-Trigger verwenden

CREATE TRIGGER total_mark
after insert 
ON student
FOR EACH ROW
insert into Final_mark values(new.marks);

Wenn wir hier Daten in die Tabelle einfügen, löst total_mark aus speichert das Ergebnis in der Tabelle Final_mark.

Das war alles über die Operation auf Auslösern, lassen Sie uns nun weitermachen und uns ihre Vor- und Nachteile ansehen.

Vor- und Nachteile von Triggern

Vorteile

  • Erzwingen von Sicherheit Genehmigungen für die Tabelle, die in der Datenbank vorhanden sind
  • Trigger bieten eine weitere Möglichkeit, die Datenintegrität zu prüfen
  • Widerspruch ungültig Austausch
  • Löst Fehler behandeln aus aus der Datenbankschicht
  • Normalerweise können Trigger zum Inspizieren der Daten nützlich sein Änderungen in Tabellen
  • Trigger bieten eine alternative Möglichkeit, geplante Aufgaben auszuführen . Durch die Verwendung von Triggern müssen wir nicht warten, bis die geplanten Ereignisse ausgeführt werden, da die Trigger automatisch aufgerufen werden, bevor oder nachdem eine Änderung an den Daten in einer Tabelle vorgenommen wird

Nachteil s

  • Trigger können nur erweiterte Validierungen bereitstellen , d.h. nicht alle Arten von Validierungen. Für einfache Validierungen können Sie die Einschränkungen NOT NULL, UNIQUE, CHECK und FOREIGN KEY verwenden
  • Trigger können den Overhead erhöhen der Datenbank
  • Trigger können schwierig zu beheben sein weil sie automatisch in der Datenbank ausgeführt werden, was für die Client-Anwendungen möglicherweise nicht unsichtbar ist

Damit sind wir am Ende dieses Artikels zu Triggern 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 sehen Sie sich unsere MySQL-DBA-Zertifizierungsschulung an, die eine von einem Kursleiter geleitete Live-Schulung und eine echte Schulung umfasst -lebenslange Projekterfahrung. Dieses Training wird Ihnen helfen, MySQL gründlich zu verstehen und das Thema zu beherrschen.

Haben Sie eine Frage an uns? Bitte erwähnen Sie es im Kommentarbereich dieser Trigger in SQL und wir werden uns bei Ihnen melden.