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

js implementiert das Umschalten von Bildern per Maus (ohne Timer)

In diesem Artikelbeispiel wird der spezifische Co...

CSS-Rand halb oder teilweise sichtbarer Implementierungscode

1. Verwenden Sie Pseudoklassen, um die Hälfte des...

Was bedeutet das n nach int(n) in MySQL?

Sie wissen vielleicht bereits, dass die Länge 1 v...

Lösungen für MySQL-Batch-Insert- und eindeutige Indexprobleme

MySQL-Batch-Einfügeproblem Da bei der Entwicklung...

Analyse von SQL-Integritätsbeschränkungsanweisungen in der Datenbank

Integritätsbeschränkungen Integritätsbedingungen ...

Beispiele für optimistisches und pessimistisches Sperren in MySQL

Die Aufgabe der Parallelitätskontrolle in einem D...

Mit CSS3 implementierte Schaltfläche zum Hovern von Bildern

Ergebnis:Implementierungscode html <ul Klasse=...

So überspringen Sie Fehler bei der MySQL-Master-Slave-Replikation

1. Traditionelle Binlog-Master-Slave-Replikation,...

Die umfassendsten 50 Mysql-Datenbankabfrageübungen

Diese Datenbankabfrageanweisung ist eine von 50 D...