Heim  >  Artikel  >  Datenbank  >  Wie schreibe ich einen MySQL-Trigger?

Wie schreibe ich einen MySQL-Trigger?

(*-*)浩
(*-*)浩Original
2019-05-17 11:08:5616903Durchsuche

Ein Trigger ist ein Datenbankobjekt, das sich auf eine MySQL-Datentabelle bezieht. Er wird ausgelöst, wenn die definierten Bedingungen erfüllt sind, und führt die im Trigger definierten Anweisungen aus. Diese Funktion von Triggern kann Anwendungen dabei helfen, die Datenintegrität auf der Datenbankseite sicherzustellen.

Wie schreibe ich einen MySQL-Trigger?

Das Syntaxformat lautet wie folgt:

CREATE <触发器名> < BEFORE | AFTER >
<INSERT | UPDATE | DELETE >
ON <表名> FOR EACH Row<触发器主体>

Die Syntaxbeschreibung lautet wie folgt.

1) Triggername

Der Name des Triggers muss in der aktuellen Datenbank einen eindeutigen Namen haben. Wenn Sie in einer bestimmten Datenbank erstellen, sollte dem Namen der Name der Datenbank vorangestellt werden.

2) INSERT |. DELETE

Triggerereignis, wird verwendet, um die Art der Anweisung anzugeben, die den Trigger aktiviert.

Hinweis: Die Ausführungszeit der drei Trigger ist wie folgt. INSERT: Trigger wird aktiviert, wenn eine neue Zeile in die Tabelle eingefügt wird. Beispielsweise kann der BEFORE-Trigger von INSERT nicht nur durch die INSERT-Anweisung von MySQL, sondern auch durch die LOAD DATA-Anweisung aktiviert werden. DELETE: Trigger werden aktiviert, wenn eine Datenzeile aus der Tabelle gelöscht wird, z. B. DELETE- und REPLACE-Anweisungen. UPDATE: Ein Trigger wird aktiviert, wenn eine Datenzeile in der Tabelle geändert wird, beispielsweise eine UPDATE-Anweisung.

3) VORHER |. NACHHER

BEFORE und AFTER, der Moment, in dem der Auslöser ausgelöst wird, geben an, dass der Auslöser vor oder nach der Anweisung ausgelöst wird, die ihn aktiviert. Wenn Sie überprüfen möchten, ob die neuen Daten die Bedingungen erfüllen, verwenden Sie die Option BEFORE. Wenn Sie mehrere oder mehr Änderungen durchführen möchten, nachdem die Anweisung ausgeführt wurde, die den Trigger aktiviert, verwenden Sie normalerweise die Option AFTER.

4) Tabellenname

Der mit dem Trigger verknüpfte Tabellenname muss eine permanente Tabelle sein. Trigger können nicht mit temporären Tabellen oder Ansichten verknüpft werden. Der Trigger wird aktiviert, wenn ein Triggerereignis auf der Tabelle auftritt. Die gleiche Tabelle kann nicht zwei Trigger mit derselben Auslösezeit und demselben Ereignis enthalten. Beispielsweise können Sie für eine Datentabelle nicht zwei BEFORE UPDATE-Trigger gleichzeitig haben, aber Sie können einen BEFORE UPDATE-Trigger und einen BEFORE INSERT-Trigger oder einen BEFORE UPDATE-Trigger und einen AFTER UPDATE-Trigger haben.

5) Trigger-Körper

Trigger-Aktionskörper, einschließlich der MySQL-Anweisung, die ausgeführt wird, wenn der Trigger aktiviert wird. Wenn Sie mehrere Anweisungen ausführen möchten, können Sie die zusammengesetzte Anweisungsstruktur BEGIN…END verwenden.

6) FÜR JEDE REIHE

bezieht sich im Allgemeinen auf das Auslösen auf Zeilenebene, und die Triggeraktion muss für jede Zeile aktiviert werden, die vom auslösenden Ereignis betroffen ist. Wenn Sie beispielsweise mit der INSERT-Anweisung mehrere Datenzeilen in eine Tabelle einfügen, führt der Trigger für jede eingefügte Datenzeile die entsprechende Triggeraktion aus.

Hinweis: Jede Tabelle unterstützt BEFORE und AFTER für INSERT, UPDATE und DELETE, sodass jede Tabelle bis zu 6 Trigger unterstützt. Pro Ereignis und Tabelle ist jeweils nur ein Auslöser zulässig. Ein einzelner Trigger kann nicht mehreren Ereignissen oder mehreren Tabellen zugeordnet werden.

Wenn Sie in MySQL außerdem die vorhandenen Trigger in der Datenbank anzeigen müssen, können Sie die SHOW TRIGGERS-Anweisung verwenden.

Beispiel:

BEGIN    
IF new.state  in ('2','3')  then  
  INSERT INTO `userservice`.`ehome_us_green_examine` 
(modifydate,modifyuser,brancCode,stateDescription,state,
userID,fromSystemkey,applydate,makeHospitalName,illnessName,
userName,rightsholderName,tranno) 
VALUES ( sysdate(), 'manage', old.brancCode, old.stateDescription, new.state, 
'', old.fromSystemkey, old.applydate,old.makeHospitalName,old.illnessName,
old.userName,old.rightsholderName, old.tranno);
END IF;  
END

Dieser Auslöser ist relativ einfach,

1. Dazwischen liegt die Datenbank Operationen

2. Zwischen IF und END IF steht das Urteil Was Sie für richtig halten, ist if. . . Die Bedeutung von

3. new.state in ('2','3') Die Bedeutung dieses Satzes ist: wenn der Feldstatus der Tabelle (2 oder 3) ist

4. Führen Sie die folgende Einfügeanweisung aus, new ist der neue Wert, old ist der ursprüngliche Wert (zum Beispiel ist old.userName der ursprüngliche Wert dieses Feldes)

5 Der gesamte Trigger wird in die Landessprache übersetzt. Wenn der Status der Tabelle 2 oder 3 wird, führen Sie die folgende Einfügeanweisung aus

Hinweis: Tritt der Trigger vor oder nach der Statusänderung auf? Wählen Sie Vorher oder Nachher, wie der Name schon sagt!

Das obige ist der detaillierte Inhalt vonWie schreibe ich einen MySQL-Trigger?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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