Heim Datenbank MySQL-Tutorial Verwendung von MySQL-Triggern

Verwendung von MySQL-Triggern

Dec 12, 2016 am 11:53 AM
mysql触发器

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
Nach dem Login kopieren

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.

Es ist ersichtlich, dass 6 Arten von Triggern erstellt werden können, nämlich: VOR DEM EINFÜGEN, VOR DEM UPDATE, VOR DEM LÖSCHEN, NACH DEM EINFÜGEN, NACH AKTUALISIEREN, NACH DEM LÖSCHEN.

Eine weitere Einschränkung besteht darin, dass Sie nicht gleichzeitig zwei Trigger desselben Typs für eine Tabelle erstellen können, sodass maximal 6 Trigger für eine Tabelle erstellt werden können.

trigger_event detaillierte Erklärung

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.

Mit der LOAD DATA-Anweisung wird eine Datei in eine Datentabelle geladen, was einer Reihe von INSERT-Operationen entspricht.

Die REPLACE-Anweisung ist im Allgemeinen der INSERT-Anweisung sehr ähnlich, mit der Ausnahme, dass sich die eingefügten Daten vom Original unterscheiden, wenn die Tabelle einen Primärschlüssel oder einen eindeutigen Index enthält Wenn der Primärschlüssel oder der eindeutige Index konsistent ist, werden zuerst die Originaldaten gelöscht und dann neue Daten hinzugefügt. Mit anderen Worten, eine REPLACE-Anweisung entspricht manchmal einer.

INSERT-Anweisung entspricht manchmal einer DELETE-Anweisung plus einer INSERT-Anweisung.

Trigger vom Typ INSERT: Der Trigger wird aktiviert, wenn eine Zeile eingefügt wird, und kann durch INSERT-, LOAD DATA- und REPLACE-Anweisungen

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.

BEGIN … END Ausführliche Erklärung

In MySQL lautet die Syntax der BEGIN … END-Anweisung:

BEGIN

[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.

Der DELIMITER-Befehl wird zu diesem Zeitpunkt verwendet (DELIMITER ist das Trennzeichen, was bedeutet, dass es sich um einen Befehl handelt und keine End-of-Statement-ID erforderlich ist). Die Syntax lautet:

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.

Ein vollständiges Beispiel für die Erstellung eines Triggers

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 ;
Nach dem Login kopieren
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,

, also vor anderen Anweisungen. Die Syntax lautet wie folgt:

DECLARE var_name[,.... ] Typ [STANDARDwert]

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.

Verwenden Sie die SET-Anweisung für die Variablenzuweisung. Die Syntax lautet:

SET var_name = expr [,var_name = expr] ...

Detaillierte Erklärung von NEU und ALT


Im obigen Beispiel wird das Schlüsselwort NEW verwendet, das INSERTED und DELETED in MS SQL Server ähnelt. NEW und DELETED werden in MySQL definiert ALT, wird verwendet, um

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.


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Erläutern Sie InnoDB Volltext-Suchfunktionen. Erläutern Sie InnoDB Volltext-Suchfunktionen. Apr 02, 2025 pm 06:09 PM

Die Volltext-Suchfunktionen von InnoDB sind sehr leistungsfähig, was die Effizienz der Datenbankabfrage und die Fähigkeit, große Mengen von Textdaten zu verarbeiten, erheblich verbessern kann. 1) InnoDB implementiert die Volltext-Suche durch invertierte Indexierung und unterstützt grundlegende und erweiterte Suchabfragen. 2) Verwenden Sie die Übereinstimmung und gegen Schlüsselwörter, um den Booleschen Modus und die Phrasesuche zu unterstützen. 3) Die Optimierungsmethoden umfassen die Verwendung der Word -Segmentierungstechnologie, die regelmäßige Wiederaufbauung von Indizes und die Anpassung der Cache -Größe, um die Leistung und Genauigkeit zu verbessern.

Wie verändern Sie eine Tabelle in MySQL mit der Änderungstabelleanweisung? Wie verändern Sie eine Tabelle in MySQL mit der Änderungstabelleanweisung? Mar 19, 2025 pm 03:51 PM

In dem Artikel werden mithilfe der Änderungstabelle von MySQL Tabellen, einschließlich Hinzufügen/Löschen von Spalten, Umbenennung von Tabellen/Spalten und Ändern der Spaltendatentypen, erläutert.

Wann könnte ein vollständiger Tabellen -Scan schneller sein als einen Index in MySQL? Wann könnte ein vollständiger Tabellen -Scan schneller sein als einen Index in MySQL? Apr 09, 2025 am 12:05 AM

Die volle Tabellenscannung kann in MySQL schneller sein als die Verwendung von Indizes. Zu den spezifischen Fällen gehören: 1) das Datenvolumen ist gering; 2) Wenn die Abfrage eine große Datenmenge zurückgibt; 3) wenn die Indexspalte nicht sehr selektiv ist; 4) Wenn die komplexe Abfrage. Durch Analyse von Abfrageplänen, Optimierung von Indizes, Vermeidung von Überindex und regelmäßiger Wartung von Tabellen können Sie in praktischen Anwendungen die besten Auswahlmöglichkeiten treffen.

Kann ich MySQL unter Windows 7 installieren? Kann ich MySQL unter Windows 7 installieren? Apr 08, 2025 pm 03:21 PM

Ja, MySQL kann unter Windows 7 installiert werden, und obwohl Microsoft Windows 7 nicht mehr unterstützt hat, ist MySQL dennoch kompatibel damit. Während des Installationsprozesses sollten jedoch folgende Punkte festgestellt werden: Laden Sie das MySQL -Installationsprogramm für Windows herunter. Wählen Sie die entsprechende Version von MySQL (Community oder Enterprise) aus. Wählen Sie während des Installationsprozesses das entsprechende Installationsverzeichnis und das Zeichen fest. Stellen Sie das Stammbenutzerkennwort ein und behalten Sie es ordnungsgemäß. Stellen Sie zum Testen eine Verbindung zur Datenbank her. Beachten Sie die Kompatibilitäts- und Sicherheitsprobleme unter Windows 7, und es wird empfohlen, auf ein unterstütztes Betriebssystem zu aktualisieren.

Differenz zwischen Clustered Index und nicht klusterer Index (Sekundärindex) in InnoDB. Differenz zwischen Clustered Index und nicht klusterer Index (Sekundärindex) in InnoDB. Apr 02, 2025 pm 06:25 PM

Der Unterschied zwischen Clustered Index und nicht klusterer Index ist: 1. Clustered Index speichert Datenzeilen in der Indexstruktur, die für die Abfrage nach Primärschlüssel und Reichweite geeignet ist. 2. Der nicht klusterierte Index speichert Indexschlüsselwerte und -zeiger auf Datenzeilen und ist für nicht-primäre Schlüsselspaltenabfragen geeignet.

Was sind einige beliebte MySQL -GUI -Tools (z. B. MySQL Workbench, PhpMyAdmin)? Was sind einige beliebte MySQL -GUI -Tools (z. B. MySQL Workbench, PhpMyAdmin)? Mar 21, 2025 pm 06:28 PM

In Artikel werden beliebte MySQL -GUI -Tools wie MySQL Workbench und PhpMyAdmin beschrieben, die ihre Funktionen und ihre Eignung für Anfänger und fortgeschrittene Benutzer vergleichen. [159 Charaktere]

Wie behandeln Sie große Datensätze in MySQL? Wie behandeln Sie große Datensätze in MySQL? Mar 21, 2025 pm 12:15 PM

In Artikel werden Strategien zum Umgang mit großen Datensätzen in MySQL erörtert, einschließlich Partitionierung, Sharding, Indexierung und Abfrageoptimierung.

Wie lassen Sie eine Tabelle in MySQL mit der Drop -Tabelle -Anweisung fallen? Wie lassen Sie eine Tabelle in MySQL mit der Drop -Tabelle -Anweisung fallen? Mar 19, 2025 pm 03:52 PM

In dem Artikel werden in MySQL die Ablagerung von Tabellen mithilfe der Drop -Tabellenerklärung erörtert, wobei Vorsichtsmaßnahmen und Risiken betont werden. Es wird hervorgehoben, dass die Aktion ohne Backups, die Detaillierung von Wiederherstellungsmethoden und potenzielle Produktionsumfeldgefahren irreversibel ist.

See all articles