För att din MySQL-klient inte ska tolka ;
som avslutar INSERT
sats som slutet av CREATE TRIGGER
påstående, måste du informera den om att du vill använda någon annan påståendeavgränsare.
I mysql
kommandoradsklient kan du göra detta med DELIMITER
kommando
. Till exempel, för att ändra din satsavgränsare till ett dubbelt semikolon:
DELIMITER ;;
Sedan kan du göra:
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;;
Men eftersom din utlösare i det här fallet bara innehåller ett påstående, behöver du inte använda en BEGIN ... END
sammansatt uttalande block
och kunde därför undvika att ändra avgränsare helt och hållet:
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'
)
;