Implementierungscode für den MySQL-Protokolltrigger

Implementierungscode für den MySQL-Protokolltrigger

SQL-Anweisung

DROP-TRIGGER
WENN
EXISTIERT sys_menu_edit;
Erstellen Sie den Trigger sys_menu_edit vor dem Update auf sys_menu für jede Zeile
BEGINNEN
INSERT INTO `g4m`.`sys_log` ( `table_name`, `val_id`, `data_json` )
WERTE
(
"sys_menü",
alte.id,
KONKAT(
"{",
CONCAT_WS(
',',
CONCAT_WS(alte.id, '"id":"', '"' ),
CONCAT_WS(alter.CODE, '"Code":"', '"'),
CONCAT_WS( alt.type_dic, '"type_dic":"', '"' ),
CONCAT_WS(alter.NAME, '"name":"', '"' ),
CONCAT_WS(alte.pid, '"pid":"', '"'),
CONCAT_WS( alt.status_dic, '"status_dic":"', '"' ),
CONCAT_WS(alte.URL, '"URL":"', '"'),
CONCAT_WS(alter.Pfad, '"Pfad":"', '"' ),
CONCAT_WS(altes Symbol, '"Symbol":"', '"'),
CONCAT_WS(alt.sort, '"sort":"', '"'),
CONCAT_WS( alte.Anmerkung, '"Anmerkung":"', '"' ),
CONCAT_WS( alt.Erstellungszeit, '"Erstellungszeit":"', '"' ),
CONCAT_WS( alt.modify_uer_id, '"modify_uer_id":"', '"' ),
CONCAT_WS( alt.Änderungszeit, '"Änderungszeit":"', '"' )
),
"}"
)
);

MySQL verwendet Trigger zur Implementierung der Protokollierung

ERSTELLEN SIE DEN TRIGGER „news_log“ NACH DEM INSERT ON news;

FÜR JEDE ZEILE IN „news_logs“ EINFÜGEN: select *, now() from news, wobei newsid = (select max(newsid ) from news);

TRIGGER FÜR NEWS_LOG DROP;

Insgesamt gibt es zwei Tabellen, eine ist die ursprüngliche Tabelle „News“ und die andere ist die Protokolltabelle „news_logs“ (mit einer zusätzlichen Datumsspalte), die automatisch Protokolle aufzeichnen kann, wenn neue Einträge eingefügt werden, ohne dass Code geschrieben werden muss. Ebenso können Sie beim Aktualisieren auch Update-Logs einfügen. Näheres dazu finden Sie in der MySQL-Dokumentation.

MySQL verwendet Trigger zum Aufzeichnen von Vorgängen

MySQL kann Einfüge-, Aktualisierungs- und Löschvorgänge nicht in einem Trigger ausführen. Sie müssen drei Trigger separat erstellen.

Trigger einfügen:

Trennzeichen $$
Trigger tri_city_insert erstellen
nach dem Einfügen 
auf t_xfw_city 
für jede Zeile
beginnen
  einfügen in t_tri_city(id,name,provinceid,ctype) 
  Werte(neue.ID, neuer.Name, neue.Provinz-ID, 1);
Ende

Auslöser der Aktualisierung:

Trennzeichen $$
Trigger „tri_city_update“ erstellen
nach dem Update 
auf t_xfw_city 
für jede Zeile
beginnen
  einfügen in t_tri_city(id,name,provinceid,ctype) 
  Werte(neue.ID, neuer.Name, neue.Provinz-ID, 2);
Ende

Auslöser löschen:

Trennzeichen $$
Trigger tri_city_delete erstellen
nach dem Löschen 
auf t_xfw_city 
für jede Zeile
beginnen
  einfügen in t_tri_city(id,name,provinceid,ctype) 
  Werte (alte ID, alter Name, alte Provinz-ID, 3);
Ende

Es ist etwas mühsam, drei Trigger für eine Tabelle zu erstellen. Ich frage mich, ob es einen besseren Weg gibt.

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung des MySQL-Triggerbeispiels
  • Eine kurze Zusammenfassung und Beispiele für MySQL-Trigger
  • Ein Artikel, der Ihnen ein tiefes Verständnis von Mysql-Triggern vermittelt
  • Verwendung von MySQL-Triggern
  • Beispiel für die MySQL-Triggeroperation „Hinzufügen“, „Löschen“, „Ändern“ und „Abfragen“
  • Verwendung von MySQL-Triggern

<<:  Grundlegende Ideen und Codes zur Implementierung von Videoplayern in Browsern

>>:  Javascript zum Wechseln von Bildern per Mausklick

Artikel empfehlen

Die perfekte Lösung, um das Passwort in mysql8.0.19 zu vergessen

Lesetipp: MySQL 8.0.19 unterstützt Kontosperrfunk...

50 superpraktische Tools für Webdesigner

Webdesigner zu sein ist nicht einfach. Sie müssen...

Pygame-Code zum Erstellen eines Schlangenspiels

Inhaltsverzeichnis Verwendete Pygame-Funktionen E...

Tutorial-Diagramm zur Installation von TomCat unter Windows 10

Installieren Sie TomCat unter Windows Dieser Arti...

Detaillierte Erläuterung der MySQL-Benutzer- und Berechtigungsverwaltung

Dieser Artikel beschreibt anhand von Beispielen d...

Funktionsprinzip und Implementierungsmethode der Vue-Anweisung

Einführung in Vue Die aktuelle Ära der großen Fro...

Vuex in einem Artikel verstehen

Inhaltsverzeichnis Überblick Die vier Hauptobjekt...

Implementierung des iview-Berechtigungsmanagements

Inhaltsverzeichnis iview-admin2.0 integrierte Ber...

HTML-Tutorial: Sortierte Listen

<br />Originaltext: http://andymao.com/andy/...

Zusammenfassung gängiger Toolbeispiele in MySQL (empfohlen)

Vorwort Dieser Artikel stellt hauptsächlich die r...

Zusammenfassung des CSS-Zählers und des Inhalts

Die Inhaltseigenschaft wurde bereits in CSS 2.1 e...