MySQL Trigger If Wert in Tabelle nicht existiert

Hi,

Dies ist meine erste Frage zu dem Thema hier hoffe es kann mir jemand einen Tipp geben wo mein Fehler liegt.

Ich würde gerne einen Trigger anlegen, der durch ein Insert in eine Tabelle a ausgelöst wird.

dann soll geprüft werden ob der value x des insert b schon in der Tabelle c existiert. dort heißt das feld wo dieser existieren könnte wert. ist dies nicht der fall soll in die Tabelle c eine neue zeile mit dem wert also new.x eingetragen werden.

CREATE TRIGGER ric_test AFTER INSERT ON a
FOR EACH ROW
if ((Select COUNT(*) from c where c.wert = new.x) > 0) THEN
INSERT INTO orga (wert) VALUES (new.x)
end if;

woraufhin ich jedes mal folgende fehlermeldung bekomme
„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 ‚end if‘ at line 5“

Hi,

das Problem liegt darin, dass Du in der Definition Deines Triggers ein Semikolon verwenden musst, das gleichzeitig aber den CREATE TRIGGER Befehl abschliesst. Deswegen musst Du einen anderen Befehls-Delimiter verwenden:

DELIMITER //
CREATE TRIGGER ric_test AFTER INSERT ON a
FOR EACH ROW
if ((Select COUNT(*) from c where c.wert = new.x) > 0) THEN
INSERT INTO orga (wert) VALUES (new.x) ;
end if //
DELIMITER ;

Abgesehen davon wäre es ganz hilfreich gewesen, die CREATE TABLE Befehle für die beteiligten Tabellen mit anzugeben. Ansonsten ist mir die Logik auch nicht ganz schlüssig: wenn in a eingefügter Wert in c vorhanden, dann füge diesen in orga ein. Aber Du wirst schon wissen, was Du da machst.

Ich hab’s auf einer 5.5.13 ausprobiert.
Gruss

Hallo, kann Dir leider nicht helfen.

Welche Mysql Version wird verwendet?

Evtl. ist es etwas banales wie keine Rechte auf die Tabelle?

http://dev.mysql.com/doc/refman/5.1/de/create-trigge…