Einführung in MySQL-Trigger, Erstellen von Triggern und Analyse von Nutzungsbeschränkungen

Einführung in MySQL-Trigger, Erstellen von Triggern und Analyse von Nutzungsbeschränkungen

Dieser Artikel beschreibt anhand von Beispielen die Einführung in MySQL-Trigger, die Erstellung von Triggern und deren Verwendungsbeschränkungen. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

Einführung

Ein SQL-Trigger ist eine Reihe von SQL-Anweisungen, die im Datenbankkatalog gespeichert sind. Ein SQL-Trigger wird immer dann ausgeführt oder ausgelöst, wenn ein mit einer Tabelle verknüpftes Ereignis eintritt, beispielsweise ein Einfügen, Aktualisieren oder Löschen. SQL-Trigger können auch als ein spezieller Typ gespeicherter Prozeduren betrachtet werden. Das Besondere daran ist, dass es nicht wie eine gespeicherte Prozedur direkt aufgerufen wird. Der Hauptunterschied zwischen Triggern und gespeicherten Prozeduren besteht darin, dass Trigger automatisch aufgerufen werden, wenn Datenänderungsereignisse für eine Tabelle ausgeführt werden, während gespeicherte Prozeduren explizit aufgerufen werden müssen.

Schauen wir uns nun die Vorteile von SQL-Triggern an:

  • SQL-Trigger bieten eine alternative Methode zur Überprüfung der Datenintegrität.
  • SQL-Trigger können Fehler in der Geschäftslogik in der Datenbankebene abfangen.
  • SQL-Trigger bieten eine weitere Möglichkeit, geplante Aufgaben auszuführen. Durch die Verwendung von SQL-Triggern müssen Sie nicht auf die Ausführung einer geplanten Aufgabe warten, da der Trigger automatisch aufgerufen wird, bevor oder nachdem eine Änderung an den Daten in der Tabelle vorgenommen wird.
  • SQL-Trigger sind sehr nützlich, um Änderungen an Daten in Tabellen zu prüfen.

Schauen wir uns die Mängel an:

  • SQL-Trigger können nur eine erweiterte Validierung bereitstellen und können nicht die gesamte Validierung ersetzen. Auf der Anwendungsebene müssen einige einfache Validierungen durchgeführt werden. Sie können beispielsweise Benutzereingaben clientseitig mit JavaScript oder serverseitig mit einer serverseitigen Skriptsprache wie JSP, PHP, ASP.NET, Perl usw. validieren.
  • Der Aufruf und die Ausführung von SQL-Triggern aus der Client-Anwendung sind nicht sichtbar. Daher ist es schwierig herauszufinden, was in der Datenbankebene geschieht.
  • SQL-Trigger können den Overhead des Datenbankservers erhöhen.

Da Trigger ein spezieller Typ gespeicherter Prozeduren sind, stellt sich die Frage, wie wir zwischen ihnen wählen. Das Folgende ist nur ein Vorschlag. Wenn wir die Arbeit nicht mit gespeicherten Prozeduren erledigen können, können wir die Verwendung von SQL-Triggern in Betracht ziehen.

Erstellen eines Triggers

In MySQL ist ein Trigger eine Reihe von SQL-Anweisungen, die automatisch aufgerufen werden, wenn Änderungen an Daten in den zugehörigen Tabellen vorgenommen werden. Trigger können so definiert werden, dass sie vor oder nach einer Datenänderung durch eine Einfüge-, Aktualisierungs- oder Löschanweisung aufgerufen werden. Vor MySQL 5.7.2 konnten maximal sechs Trigger pro Tabelle definiert werden. Werfen wir einen Blick auf ihre kurze Einführung:

  • VOR DEM EINFÜGEN – Der Trigger wird aktiviert, bevor Daten in die Tabelle eingefügt werden.
  • AFTER INSERT – Aktiviert den Trigger, nachdem Daten in die Tabelle eingefügt wurden.
  • VOR DEM UPDATE – Aktiviert den Trigger, bevor die Daten in der Tabelle aktualisiert werden.
  • NACH UPDATE – Aktiviert den Trigger, nachdem die Daten in der Tabelle aktualisiert wurden.
  • VOR DEM LÖSCHEN – Der Trigger wird aktiviert, bevor Daten aus der Tabelle gelöscht werden.
  • NACH DEM LÖSCHEN – Der Trigger wird aktiviert, nachdem Daten aus der Tabelle gelöscht wurden.

Ab MySQL 5.7.2+ können Sie jedoch mehrere Trigger für dasselbe Triggerereignis und dieselbe Aktionszeit definieren. Wenn Sie Anweisungen verwenden, die Daten in einer Tabelle ändern, ohne INSERT-, DELETE- oder UPDATE-Anweisungen zu verwenden, werden die mit der Tabelle verknüpften Trigger nicht aufgerufen. Beispielsweise löscht die Truncate-Anweisung alle Daten in einer Tabelle, ruft aber keine mit der Tabelle verknüpften Trigger auf. Einige Anweisungen verwenden jedoch die INSERT-Anweisung im Hintergrund, z. B. die REPLACE-Anweisung oder die LOAD DATA-Anweisung. Bei Verwendung dieser Anweisungen werden die entsprechenden, mit der Tabelle verknüpften Trigger aufgerufen. Daher müssen wir für jeden mit der Tabelle verknüpften Trigger einen eindeutigen Namen verwenden. Es empfiehlt sich, für verschiedene Tabellen den gleichen Triggernamen zu definieren. Schauen wir uns die Syntaxstruktur zum Definieren eines Triggers an:

(VORHER | NACHHER)_Tabellenname_(EINFÜGEN | AKTUALISIEREN | LÖSCHEN)

Beispielsweise ist before_order_update ein Trigger, der aufgerufen wird, bevor eine Zeile in der Auftragstabelle aktualisiert wird. Schauen wir uns eine andere Definition an:

Tabellenname_(VORHER | NACHHER)_(EINFÜGEN | AKTUALISIEREN | LÖSCHEN)

Beispielsweise ist order_before_update dasselbe wie der oben beschriebene Trigger before_order_update.

MySQL speichert Trigger im Datenverzeichnis, zum Beispiel: /data/luyaran/, und verwendet Dateien mit den Namen tablename.TRG und triggername.TRN:

  • Die Datei tablename.TRG ordnet den Trigger der entsprechenden Tabelle zu.
  • Die Datei triggername.TRN enthält die Triggerdefinition.

Wir können also MySQL-Trigger sichern, indem wir die Triggerdateien in den Sicherungsordner kopieren, und wir können auch das Tool mysqldump verwenden, um die Trigger zu sichern.

Nutzungsbeschränkung

MySQL-Trigger decken die gesamte in Standard-SQL definierte Funktionalität ab. Bei der Verwendung in Ihren Anwendungen gelten jedoch einige Einschränkungen:

  • Wird in den Anweisungen SHOW, LOAD DATA, LOAD TABLE, BACKUP DATABASE, RESTORE, FLUSH und RETURN verwendet.
  • Verwenden Sie Anweisungen, die implizit oder explizit ein Commit oder Rollback durchführen, wie etwa COMMIT, ROLLBACK, START TRANSACTION, LOCK/UNLOCK TABLES, ALTER, CREATE, DROP, RENAME usw.
  • Verwenden Sie vorbereitete Anweisungen wie PREPARE, EXECUTE usw.
  • Verwenden Sie dynamische SQL-Anweisungen.

Okay, das ist alles zu diesem Eintrag.

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“, „Zusammenfassung der Kenntnisse zu MySQL-Datenbanksperren“ und „Zusammenfassung der allgemeinen MySQL-Funktionen“.

Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist.

Das könnte Sie auch interessieren:
  • MySQL-Triggersyntax und Anwendungsbeispiele
  • Detaillierte Erläuterung der gespeicherten Prozedur „MySql View Trigger“
  • MySQL-Triggerprinzip und Analyse von Anwendungsbeispielen
  • Implementierungscode für den MySQL-Protokolltrigger
  • Beispiel für die MySQL-Triggeroperation „Hinzufügen“, „Löschen“, „Ändern“ und „Abfragen“
  • MySQL-Trigger: Beispielanalyse zum Erstellen mehrerer Trigger
  • MySQL-Trigger: Erstellen und Verwenden von Triggern
  • Einfaches Beispiel für die Definition und Verwendung von MySQL-Triggern
  • Detaillierte Erklärung des Konzepts, Prinzips und der Verwendung von MySQL-Triggern
  • Tutorial zum Deaktivieren und Aktivieren von Triggern in MySQL [Empfohlen]
  • Detaillierte Erklärung der MySQL-Datenbank-Trigger

<<:  Detaillierte Erklärung zur Verwendung selbstverschachtelter Vue-Baumkomponenten

>>:  Verwenden Sie ein Shell-Skript, um die Python3.8-Umgebung in CentOS7 zu installieren (empfohlen)

Artikel empfehlen

Textmodus im IE! Einführung in die Rolle von DOCTYPE

Nachdem das im vorherigen Artikel besprochene Prob...

Unterschied und Implementierung von JavaScript Anti-Shake und Throttling

Inhaltsverzeichnis 1. Anti-Shake 2. Drosselung 3....

Vue implementiert ein einfaches Einkaufswagenbeispiel

In diesem Artikelbeispiel wird der spezifische Co...

HTML+CSS-Beispielcode für zusammengeführte Tabellenränder

Wenn wir Tabellen- und td-Tags Rahmen hinzufügen,...

MySQL 5.6.23 Installations- und Konfigurations-Umgebungsvariablen-Tutorial

In diesem Artikel finden Sie das Installations- u...

So ändern Sie die Portzuordnung eines laufenden Docker-Containers

Vorwort Wenn Docker Run einen Container erstellt ...

Erfahren Sie mehr über die MySQL-Speicher-Engine

Inhaltsverzeichnis Vorwort 1. MySQL-Hauptspeicher...

Detailliertes Beispiel für MySQL-Datenspeicherprozessparameter

Es gibt drei Typen von MySQL-gespeicherten Prozed...

Detaillierte Erläuterung der Nginx Reverse Proxy WebSocket-Konfiguration

Kürzlich habe ich bei der Arbeit an einem Projekt...

Detaillierte Diskussion über Speicher und Variablenspeicher in JS

Inhaltsverzeichnis Vorwort JS Magische Zahl Numme...

Implementierung des Nginx-Proxy-Ports 80 bis Port 443

Die Konfigurationsdatei nginx.conf lautet wie fol...

So erstellen Sie Komponenten in React

Inhaltsverzeichnis Vorwort Komponenteneinführung ...