Erstellen und entfernen Sie Trigger oder Trigger in MySQL

Programmierung von Triggern in MySQL

Die Auslöser oder üblicherweise bei der Programmierung von “Auslösern” genannten Objekte sind Objekte, die sich in den Datenbanken befinden. Wenn ein bestimmtes Ereignis oder eine bestimmte Operation in dieser Datenbank ausgeführt wird, führt unser Trigger oder Trigger automatisch eine Aktion aus, für die wir sie zuvor programmiert haben.

Die Trigger werden automatisch ausgelöst, wenn INSERT-, DELETE- oder UPDATE-Vorgänge ausgeführt werden, bei denen es sich um Einfügen, Löschen oder Aktualisieren handelt. Bei der Ausführung einer dieser Aktionen führen unsere Trigger eine Anweisung oder einen Anweisungsblock für die zuvor programmierten aus.

Die Struktur eines Triggers in MySQL ist wie folgt:

create.jpg

 [DEFINER = {user | CURRENT_USER}] 

Dieser Teil des Codes teilt dem Datenbankmanager mit, welcher Benutzer berechtigt ist, unsere Trigger aufzurufen, wenn die DML-Ereignisse auftreten. Der Standardwert ist CURRENT_USER.

Um den Namen unseres Triggers zu wählen, müssen Sie einem sehr guten Kriterium folgen: Geben Sie zuerst den Namen der Tabelle ein, dann die Initiale der DML-Operation (I von Insert, D von Delete oder U von Update) und dann die Initiale vom Zeitpunkt der Ausführung (entweder A nach oder B vor).

 VOR | Nachher 

Es gibt nur den Moment an, in dem unser Trigger ausgeführt wird, dh, wenn der Trigger vor dem DML-Ereignis (vor) oder nach (nach) ausgelöst wird.

 INSERT | LÖSCHEN | UPDATE 

Es sagt uns, was der Satz sein wird, mit dem wir unseren Trigger auslösen, Einfügen, um Daten einzugeben, Löschen, um sie zu löschen oder Aktualisieren, um sie zu ändern.

 ON Name der Tabelle 

Hier erfahren wir, welche Tabelle mit unserem Trigger verknüpft ist.

 FÜR JEDE REIHE 

Es sagt uns nur, dass der Trigger für jede Zeile unserer Tabelle ausgeführt wird, die zuvor im ON definiert wurde.

See also  So überwachen Sie die Leistung von Ubuntu Linux mit Pydash

Die letzte SQL-Anweisung oder der Anweisungsblock sind die Anweisungen, die unser Trigger bei der Eingabe von action ausführt.

Praktisches Beispiel eines Triggers

Jetzt sehen wir ein praktisches Beispiel, wie ein Auslöser programmiert wird, um Bustickets für eine bestimmte Fahrt zu verkaufen, während freie Plätze vorhanden sind.
Wir können jede Software verwenden, die Trigger und gespeicherte Prozesse akzeptiert.

Wir erstellen eine Datenbank :

database.jpg

2. Gefolgt haben wir zwei Tabellen in unserer Datenbank angelegt . In einem von ihnen speichern wir die verkauften Tickets und der andere wird erstellt, damit wir wissen, wie viele Tickets für die bestimmte Reise verfügbar sind.

In der folgenden Tabelle finden Sie Informationen zur Anzahl der verkauften Tickets:

2s.jpg

Dann erstellen wir eine Tabelle, in der wir die Informationen über die Anzahl der für die jeweilige Reise verfügbaren Tickets aufbewahren:

3s.jpg

3. Nun erstellen wir die Tabelle , um die verschiedenen Reisen zu speichern:

4s.jpg

4. Nach dem Erstellen der Datenbank und der Tabellen werden wir die SQL-Abfrage des Triggers erstellen, aber vorher müssen wir wissen, welche NEW- und OLD-Bezeichner in den Triggern sind.

Damit sich unser Trigger auf eine oder mehrere Spalten in der Tabelle bezieht, müssen die oben genannten Bezeichner NEW AND OLD verwendet werden.
ALT: Gibt den alten Wert der Spalte an
NEU: Der neue Wert, den es annehmen könnte.
Als Beispiel: OLD.drive oder NEW.drive.

Mit der INSERT-Anweisung können wir nur den NEW-Bezeichner verwenden, da mit INSERT die Funktion generiert wird, neue Werte in die Spalte (n) einzufügen.
Wenn wir in diesem Fall die DELETE-Anweisung verwenden, müssen wir den OLD-Bezeichner verwenden, da wir mit DELETE bereits vorhandene Werte löschen.
Wenn wir dagegen die UPDATE-Anweisung verwenden, können wir OLD und NEW verwenden, da wir auf alte oder neue Werte verweisen können, weil wir vorhandene Datensätze für andere Werte ändern.

See also  So aktivieren Sie die automatische Antwort "Abwesend" in Google Mail

Nachdem wir die Bezeichner verstanden haben, würde die SQL-Anweisung folgendermaßen aussehen:

6s.jpg

Wenn wir die SQL-Anweisung in einem Programm ausführen, das sie unterstützt, sehen wir, dass der Trigger tatsächlich erstellt wurde .

Um die Operation sehen zu können, führen wir einige logische Werte für eine Busfahrt ein, zum Beispiel:

7.JPG

Hier habe ich in der Reise mit der Identifikationsnummer 1 eingetragen, dass 45 Plätze frei sind.

Danach verkaufen wir ein Ticket, zum Beispiel das Ticket für Platz 14:

8.JPG

Wenn wir diese Abfrage durchführen, wenn wir zum Feld für die aktuelle Verfügbarkeit gehen, werden wir feststellen, dass 45 auf 44 geändert wurde, da der Auslöser ‘update_availability’ aktiviert wurde.

Die Verwendung von Triggern hat den Vorteil, dass Sie verschiedene Anwendungsfälle programmieren können und die Integrität der Datenbank erhalten bleibt. Das heißt, wir können Routinen erstellen, die bestimmte Aktionen automatisch ausführen, ohne dies manuell tun zu müssen. Es wäre sehr nützlich, um Informationen jeglicher Art zu validieren oder Bewegungen der Datenbank nachzuverfolgen.

Ein weiteres sehr interessantes Beispiel, wie ich gerade in den Validierungen kommentiert habe, ist die Bestimmung der Altersmehrheit, bevor ein Satz geschrieben wird, zum Beispiel:

9s.jpg

Nachdem wir die Beispiele für die Erstellung von Triggern gesehen haben, müssen wir wissen, wie auf die Informationen des Triggers zugegriffen werden kann. Dafür verwenden wir die Sätze:

So zeigen Sie die Trigger an, die sich in unserer Datenbank befinden:

 Trigger anzeigen 

Wenn wir hingegen die Informationen des aktuell erstellten Triggers anzeigen möchten, gehen Sie wie folgt vor:

 SHOW CREATE TRIGGER student_BU_trigger 

Nachdem wir gesehen haben, wie die Trigger erstellt und angezeigt werden, werden wir sehen, mit welchem ​​Satz ein in unserer Datenbank vorhandener Trigger beseitigt wird.
Dazu müssen wir nur den typischen Entfernungsbefehl verwenden: drop .

 DROP TRIGGER [IF_EXISTS] name_disparador 

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *