Veröffentlicht 15. Januar 201114 j Guten Tag, ich versuche hier unter zuhilfename der mysql-doku die richtige syntax für das erstellen eines AFTER INSERT Triggers zustande zu bringen. Jedoch könnte ich hierbei noch ein zweites paar Augen gebrauchen die mal den ein oder anderen prüfenden Blick drüberwerfen. Ich bin mir jetzt nicht sicher was ihm daran nicht gefällt: CREATE TRIGGER InBuchPl AFTER INSERT ON tbl_buchungen FOR EACH ROW BEGIN Set @evid = NEW.ed_EvDatenID; Set @counter = (Select SUM(ems.tbl_buchungen.bu_GebuchtePlaetze) From ems.tbl_buchungen Where ems.tbl_buchungen.ed_EvDatenID=@evid); Update ems.tbl_eventdaten SET ems.tbl_eventdaten.ed_AktTeilnehmer=@counter; END; Die kommandozeile scheint jede einzelne Zeile auszuführen, sprich zusammenhangslos. Siehe hier: mysql> CREATE TRIGGER InBuchPl AFTER INSERT ON tbl_buchungen -> FOR EACH ROW BEGIN -> Set @evid = NEW.ed_EvDatenID; 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 '' at line 3 mysql> Set @counter = (Select SUM(ems.tbl_buchungen.bu_GebuchtePlaetze) From ems.tbl_buchungen Where ems.tbl_buchungen.ed_EvDatenID=@evid); Query OK, 0 rows affected (0.00 sec) mysql> Update ems.tbl_eventdaten SET ems.tbl_eventdaten.ed_AktTeilnehmer=@co unter; Query OK, 0 rows affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 1 mysql> END; Wenn jemand einen rat wüsste wäre ich sehr dankbar. lg Gateway
15. Januar 201114 j Das liegt an dem Semikolon, dass als Delimiter genutzt wird. MySQL hat dann zwar ein BEGIN aber kein END im Trigger. Du musst den Delimiter vorher ändern: MySQL :: MySQL 5.1 Referenzhandbuch :: 19.2.1 CREATE PROCEDURE und CREATE FUNCTION (ganz unten auf der Seite)
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.