Looking for mysql Keywords? Try Ask4Keywords

MySQLLÖST AUS


Syntax

  • CREATE [DEFINER = {Benutzer | CURRENT_USER}] TRIGGER trigger_name trigger_time trigger_event ON tbl_name Für jede Zeile [trigger_order] trigger_body
  • trigger_time: {VOR VOR | NACH DEM }
  • trigger_event: {INSERT | UPDATE | LÖSCHEN}
  • trigger_order: {FOLLOWS | PRECEDES} other_trigger_name

Bemerkungen

Wenn Sie bei anderen DBs bereits Trigger verwenden, müssen Sie zwei Punkte beachten:

FÜR JEDE REIHE

FOR EACH ROW ist ein obligatorischer Teil der Syntax

Sie können keine Anweisung auslösen (einmal durch Abfrage) wie Oracle. Es handelt sich eher um ein leistungsbezogenes Problem als um ein wirklich fehlendes Feature

TRIGGER ERSTELLEN ODER ERSETZEN

Das CREATE OR REPLACE wird von MySQL nicht unterstützt

MySQL erlaubt diese Syntax nicht, Sie müssen stattdessen Folgendes verwenden:

DELIMITER $$

DROP TRIGGER IF EXISTS myTrigger;
$$
CREATE TRIGGER myTrigger
-- ...

$$
DELIMITER ;

Seien Sie vorsichtig, dies ist keine atomare Transaktion :

  • Sie verlieren den alten Auslöser, wenn CREATE fehlschlägt
  • LOCK TABLES myTable WRITE; Last können andere Operationen zwischen DROP und CREATE werden. Verwenden Sie LOCK TABLES myTable WRITE; zuerst, um Dateninkonsistenz und UNLOCK TABLES; zu vermeiden UNLOCK TABLES; nach dem CREATE , um die Tabelle freizugeben

LÖST AUS Verwandte Beispiele