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

Hinweise zum Zeichengerätetreiber des Linux-Kernel-Gerätetreibers

/******************** * Zeichengerätetreiber*****...

Prioritätsanalyse von und/oder Abfragen in MySQL

Dies ist ein Problem, das leicht übersehen wird. ...

Methode zum dynamischen Laden von Geojson basierend auf Vue+Openlayer

Laden eines oder mehrerer Features <Vorlage>...

Vor- und Nachteile des Tabellenlayouts und warum es nicht empfohlen wird

Nachteile von Tabellen 1. Tabellen nehmen mehr Byt...

Details zur MySQL-Sicherheitsverwaltung

Inhaltsverzeichnis 1. Vorstellen gemäß der Bestel...

Beispielcode zur Implementierung des Verlaufs in Vuex

Ich habe vor Kurzem eine visuelle Operationsplatt...

JavaScript zum Implementieren des Slider-Verifizierungscodes

In diesem Artikel wird der spezifische JavaScript...

Beispielcode zur Implementierung von Neon-Button-Animationseffekten mit CSS3.0

Heute zeige ich Ihnen einen Neon-Button-Animation...

Vue implementiert eine kleine Notizblockfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Auszeichnungssprache - Liste

Standardisierte Designlösungen – Auszeichnungsspr...