Heim  >  Artikel  >  Datenbank  >  Wie ist die Syntax von Triggern in MySQL?

Wie ist die Syntax von Triggern in MySQL?

WBOY
WBOYnach vorne
2023-05-28 23:17:351865Durchsuche

1. Definition:

Ein in MySQL eingebettetes Programm enthält Trigger und gespeicherte Prozeduren, die beide Ähnlichkeiten aufweisen. Ein Trigger ist eine Aktion, die durch ein Ereignis ausgelöst wird. Wenn die Datenbank diese Ereignisse ausführt, werden Trigger aktiviert, um die entsprechenden Aktionen auszuführen. In MySQL umfassen Auslösebedingungen UPDATE-, INSERT- und DELETE-Operationen.

  • In MySQL lösen derzeit nur drei Vorgänge, UPDATE, INSERT und DELETE, Trigger aus. Andere Vorgänge unterstützen keine Trigger. Dies unterscheidet sich stark von Triggern in Oracle, daher sollten Sie auf den Unterschied achten.

  • Jede Triggertabelle erlaubt nur einen Trigger pro Ereignis. Daher sind pro Tabellenwert maximal 6 Trigger zulässig. Wenn eine Tabelle zwei Ereignisse auslösen muss, INSERT und DELETE, müssen Sie jeweils zwei Trigger erstellen.

  • Nur Tabellen unterstützen Trigger, Ansichten und temporäre Tabellen nicht.

2. Syntax:

CREATE TRIGGER TRIGGER_NAME
BEFORE/AFTER 
UPDATE/INSERT/DELETE ON TABLE_NAME 
FOR EACH ROW
#触发器主体
[BEGIN]
SQL操作
[END];
  • Erstellen eines Triggers: Es ist dasselbe wie das Erstellen einer gespeicherten Prozedur mit der CREATE-Anweisung, aber bitte beachten Sie, dass es hier kein OR REPLACE gibt.

  • TRIGGER_NAME: Triggername. In MySQL muss sichergestellt werden, dass die Trigger in jeder Tabelle eindeutig sind und die Trigger in jeder Datenbank möglicherweise nicht eindeutig sind. Dies bedeutet, dass zwei Tabellen in einer Datenbank dieselben Trigger haben können. Dieses Verhalten ist in anderen Datenbanken nicht zulässig. Um die Konsistenz der Formatierung zu gewährleisten, sollte TRIGGER_NAME so eindeutig wie möglich sein.

  • VOR/NACH: Der Moment, in dem der Auslöser ausgelöst wird. Wenn Sie möchten, dass der Trigger ausgeführt wird, bevor das Ereignis ausgelöst wird, können Sie „BEFORE“ verwenden. Wenn Sie möchten, dass der Trigger ausgeführt wird, nachdem das Ereignis ausgelöst wird, können Sie „AFTER“ verwenden.

  • Vorgänge: UPDATE/INSERT/DELETE lösen entsprechende Ereignisse und Bedingungen aus. MySQL erlaubt nur diesen drei DDL-Vorgängen die Unterstützung von Triggern, andere Vorgänge werden nicht unterstützt.

  • FÜR JEDE REIHE: Jede vom Triggerereignis betroffene Zeile muss die Triggeraktion aktivieren. In MySQL bedeutet das Auslösen von Zeilen, dass FOE EACH ROW nicht weggelassen werden kann und das Auslösen von Anweisungen nicht unterstützt wird.

  • Trigger-Body: Es kann entweder eine einzelne SQL-Anweisung oder ein komplexer Strukturblock bestehend aus BEGIN...END sein.

# 创建一个触发器T1,在对表customer做插入操作时,就会触发T1,之后会在日志表note中插入一条数据
CREATE TRIGGER T1
AFTER 
INSERT ON customer
FOR EACH ROW # 触发器主体
INSERT INTO note(日期,目标,操作) VALUES(NOW(),'customer','insert');

3. Trigger löschen

Ähnlich wie beim Löschen von Tabellen und gespeicherten Prozeduren wird die DROP-Anweisung zum Löschen von Triggern verwendet.

#删除触发器T1
DROP TRIGGER IF EXISTS T1;

Trigger können nicht aktualisiert und geändert werden. Wenn Sie den Inhalt eines Triggers ändern möchten, können Sie den Trigger nur zuerst löschen und dann einen neuen Trigger erstellen.

4. Abfragetrigger

rrree

5. Verwendung der Triggertypen OLD und NEW

  Trigger werden vor oder nach DDL-Operationen ausgelöst, und bestimmte Änderungen werden immer an der Zieltabelle vorgenommen Zieltabelle. Die Werte davor und danach verwenden die Verwendung von OLD und NEW.

Wie der Name schon sagt, ist OLD der Wert vor der Änderung, also der Wert vor UPDATE oder DELETE oder DELETE.

 Und NEW ist der neue Wert nach UPDATE, also der Wert, der gerade eingefügt wird oder eingefügt wurde.

Wie ist die Syntax von Triggern in MySQL?

Konkretes Beispiel:

#在已知数据库内,查询触发器
SHOW TRIGGERS;
SELECT * FROM information_schema.TRIGGERS WHERE TRIGGER_NAME = '触发器名'
#查询所有的触发器
SELECT * FROM information_schema.TRIGGERS(WHERE TRIGGER_SCHEMA = '数据库名')

Das obige ist der detaillierte Inhalt vonWie ist die Syntax von Triggern in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen