Heim >Datenbank >MySQL-Tutorial >Verwendung von MySQL-Triggern
MySQL bietet Unterstützung für Trigger. Ein Trigger ist ein Datenbankobjekt, das sich auf Tabellenoperationen bezieht. Wenn ein bestimmtes Ereignis in der Tabelle auftritt, in der sich der Trigger befindet, wird das Objekt aufgerufen, d. h. das Operationsereignis der Tabelle löst die Ausführung des Triggers in der Tabelle aus.
Trigger erstellen
In MySQL lautet die Syntax zum Erstellen eines Triggers wie folgt:
CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt
Unter anderem:
trigger_name: identifiziert den Triggernamen, vom Benutzer angegeben;
trigger_time: identifiziert die Auslösezeit, der Wert ist VOR oder
AFTER;
trigger_event: identifiziert das Triggerereignis, der Wert ist INSERT, UPDATE oder
DELETE;
tbl_name: identifiziert den Tabellennamen zum Erstellen des Triggers, d
BEGIN und END enthalten mehrere Anweisungen.
MySQL außer INSERT, UPDATE, DELETE
Zusätzlich zur Definition grundlegender Operationen werden auch LOAD DATA- und REPLACE-Anweisungen definiert, die auch die Auslösung der oben genannten 6 Arten von Triggern bewirken können.
UPDATE ausgelöst werden
Typ Trigger: Der Trigger wird aktiviert, wenn eine bestimmte Zeile geändert wird, was durch die UPDATE-Anweisung ausgelöst werden kann.
DELETE Typ Trigger: Der Trigger wird aktiviert, wenn eine bestimmte Zeile gelöscht wird, was durch ausgelöst werden kann
Ausgelöst durch DELETE- und REPLACE-Anweisungen.
In MySQL lautet die Syntax der BEGIN … END-Anweisung:
[statement_list]
END
Unter anderem Anweisungsliste
Stellt eine Liste mit einer oder mehreren Anweisungen dar. Jede Anweisung in der Liste muss mit einem Semikolon (;) abgeschlossen werden.
In MySQL ist das Semikolon die Kennung des Endes der Anweisung. Wenn ein Semikolon auftritt, bedeutet dies, dass die Anweisung beendet ist und MySQL mit der Ausführung beginnen kann. Daher stößt der Interpreter auf Anweisungsliste
Die Ausführung beginnt nach dem Semikolon in , und dann wird ein Fehler gemeldet, da kein END passendes BEGIN gefunden wird.
DELIMITER
neuer_delemiter
neuer_delemiter
Es kann auf ein oder mehrere Längensymbole eingestellt werden. Der Standardwert ist Semikolon (;). Wir können es in andere Symbole ändern, z. B. $:
DELIMITER
$
Die Anweisung danach endet mit einem Semikolon und der Interpreter reagiert nicht. Nur wenn $ angetroffen wird, gilt die Anweisung als beendet. Beachten Sie, dass wir nach der Verwendung daran denken sollten, es wieder zu ändern.
Angenommen, es gibt zwei Tabellen im System:
Klassentabelle class(Klassennummer classID, Anzahl der Schüler in der Klasse stuCount)
Schülertabelle
Student (Studenten-ID, Klassen-ID)
Um einen Auslöser zu erstellen, der die Anzahl der Studenten in der Klassentabelle automatisch aktualisiert, wenn Studenten hinzugefügt werden, lautet der Code wie folgt:
DELIMITER $ create trigger tri_stuInsert after insert on student for each row begin declare c int; set c = (select stuCount from class where classID=new.classID); update class set stuCount = c + 1 where classID = new.classID; end$ DELIMITER ;Detaillierte Erklärung der Variablen
DECLARE wird in MySQL verwendet, um eine lokale Variable zu definieren, die nur in BEGIN ... END verwendet werden kann
Es wird in zusammengesetzten Anweisungen verwendet und sollte am Anfang von zusammengesetzten Anweisungen definiert werden,
Darunter:
var_name ist der Variablenname, genau wie bei SQL
Die Anweisungen sind die gleichen, bei Variablennamen wird die Groß-/Kleinschreibung nicht beachtet. Es können mehrere von MySQL unterstützte Datentypen gleichzeitig definiert werden, der Anfangswert der Variablen ist NULL. Bei Bedarf können Sie verwenden
Die DEFAULT-Klausel stellt einen Standardwert bereit, der als Ausdruck angegeben werden kann.
darzustellen
In der Tabelle, in der sich der Auslöser befindet, die Datenzeile, die den Auslöser ausgelöst hat.
Im Einzelnen:
In einem Trigger vom Typ INSERT, NEU
Wird verwendet, um neue Daten darzustellen, die (VOR) eingefügt werden oder (NACHHER) eingefügt wurden.
In UPDATE-Typ-Triggern wird OLD verwendet, um die ursprünglichen Daten darzustellen, die geändert werden oder geändert wurden
Wird verwendet, um neue Daten darzustellen, die geändert werden oder wurden.
In Triggern vom Typ DELETE wird OLD verwendet, um die Originaldaten darzustellen, die gelöscht werden oder wurden.
Verwendung:
NEW.columnName (columnName ist ein Spaltenname der entsprechenden Datentabelle)
Außerdem ist OLD schreibgeschützt, während NEW SET in Triggern verwenden kann
Weisen Sie einen Wert zu, damit der Auslöser nicht erneut ausgelöst wird und einen Rundruf auslöst (fügen Sie beispielsweise vor dem Einfügen eines Studenten „2013“ vor seiner Studentennummer hinzu).
Trigger anzeigen
ist dasselbe wie das Anzeigen von Datenbanken (Datenbanken anzeigen;) und das Anzeigen von Tabellen (Tabellen anzeigen;). Die Syntax zum Anzeigen von Triggern lautet wie folgt:
SHOW TRIGGERS [FROM schema_name];
Wobei schema_name der Name des Schemas in MySQL ist
Schema und Datenbank sind gleich, das heißt, der Datenbankname kann angegeben werden, sodass
nicht zuerst „Datenbankname verwenden“ muss.
Trigger löschen
Wie beim Löschen von Datenbanken und Tabellen lautet die Syntax zum Löschen von Triggern wie folgt:
DROP TRIGGER [IF EXISTS] [Schemaname.]Triggername
Ausführungsreihenfolge der Trigger
Die von uns erstellte Datenbank ist im Allgemeinen eine InnoDB-Datenbank, und die darauf erstellten Tabellen sind Transaktionstabellen, also transaktionssicher. Wenn zu diesem Zeitpunkt die SQL-Anweisung oder der Trigger nicht ausgeführt werden kann, wird MySQL Die Transaktion wird zurückgesetzt, einschließlich:
① Wenn der BEFORE-Trigger nicht ausgeführt werden kann, kann SQL nicht korrekt ausgeführt werden.
②Wenn die SQL-Ausführung fehlschlägt, wird der Trigger vom Typ AFTER nicht ausgelöst.
③NACH
Wenn die Ausführung eines Triggers dieses Typs fehlschlägt, führt SQL einen Rollback durch.
Haben Sie etwas über die Verwendung von MySQL-Triggern gelernt? Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und wir können gemeinsam Fortschritte machen.