Damit Ihr MySQL-Client den ;
nicht interpretiert das beendet den INSERT
-Anweisung als Ende des CREATE TRIGGER
-Anweisung müssen Sie ihr mitteilen, dass Sie ein anderes Anweisungstrennzeichen verwenden möchten.
Im mysql
Kommandozeilen-Client können Sie dies mit dem DELIMITER
tun Befehl
. So ändern Sie beispielsweise Ihr Anweisungstrennzeichen in ein doppeltes Semikolon:
DELIMITER ;;
Dann können Sie Folgendes tun:
CREATE TRIGGER LOG_UPDATE BEFORE UPDATE ON WORKLOG FOR EACH ROW BEGIN
INSERT INTO WORKLOG_BACKUP VALUES (
NULL,
CURRENT_TIMESTAMP,
NEW.LOGNO,
NEW.JOBNO,
NEW.EMPLOYEENO,
NEW.WORKDATE,
NEW.WORKTIME,
'UPDATE'
);
END;;
Da Ihr Trigger in diesem Fall jedoch nur eine Anweisung enthält, müssen Sie kein BEGIN ... END
zusammengesetzter Anweisungsblock
und könnte daher ganz auf das Ändern von Trennzeichen verzichten:
CREATE TRIGGER LOG_UPDATE BEFORE UPDATE ON WORKLOG FOR EACH ROW
INSERT INTO WORKLOG_BACKUP VALUES (
NULL,
CURRENT_TIMESTAMP,
NEW.LOGNO,
NEW.JOBNO,
NEW.EMPLOYEENO,
NEW.WORKDATE,
NEW.WORKTIME,
'UPDATE'
)
;