gi-networx
Goto Top

CREATE TRIGGER - Problem mit MySQL 5.0

CREATE TRIGGER verursacht Fehler trotz korrekter Syntax (MySQL 5.0/Win)

Hallo da draußen,

ich habe gerade Folgendes ausprobiert:

Ich hab eine Tabelle 'footable' mit den Feldern id, val1 und val2 in der Db "test" erstellt.

Danach wollte ich auf diesen Table einen Trigger anlegen mit:

mysql> USE test
Database changed
mysql> DELIMITER ##
mysql> CREATE TRIGGER footable_BI BEFORE INSERT ON footable
-> FOR EACH ROW BEGIN
-> SET NEW.val2 = NEW.val1;
-> END;##

Das sollte nur zu Testzwecken dienen und beim Einfügen eines Datensatzes in val2 einfach der Wert von val2 schreiben.
Allerdings erhalte ich dabei:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'TRIGG
ER footable_BI BEFORE INSERT ON footable
FOR EACH ROW BEGIN
SET NEW.val2 ' at line 1
mysql>

Ich hab bereits in der MySQL-Referemz nachgeschaut und auch ein Paar andere Variationen ausprobiert. Jedoch habe ich es bis jetzt nicht geschafft diesen (oder überhaupt IRGENDeinen) Trigger anzulegen.

Weiß von euch jemand spontan Abhilfe?

Danke im Voraus und Viele Grüße

Michl

Content-Key: 45134

Url: https://administrator.de/contentid/45134

Printed on: April 18, 2024 at 23:04 o'clock

Member: Biber
Biber Nov 22, 2006 at 22:02:40 (UTC)
Goto Top
Moin gi_networx,

Statt "END;##" sollte es IMHO nur "END##" heißen.
Bzw sauberer:
...
END
##

Ob die Syntax mit "Delimiter ##" bei MySQL stimmt, weiß ich nicht.
Aber bei anderen RDMSen heißt es "Set Alternate Delimiter ##"

[Nur Verdachtsmomente - habe kein MySQL im Einsatz.]


Gruß
Biber
Member: gi-networx
gi-networx Nov 22, 2006 at 22:08:37 (UTC)
Goto Top
Hallo Biber,

das mit dem Delimiter ist so richtig. Funktioniert in anderen Commands auch wunderbar und ist in der Doku auch so beschrieben.

Dein Tip hat leider incht geholfen, wenn ich den Delimiter allein in eine neue Zeile schreibe führt MySQL den Puffer weiter und erwartet weiteren Input (komischerweise).

Aber trotzdem danke für deine Idee

Gruß

Michl