Affinché il tuo client MySQL non interpreti il ;
che termina il INSERT
istruzione come fine del CREATE TRIGGER
dichiarazione, devi informarlo che desideri utilizzare qualche altro delimitatore di dichiarazione.
Nel mysql
client della riga di comando, puoi farlo con il DELIMITER
comando
. Ad esempio, per modificare il delimitatore dell'istruzione in un doppio punto e virgola:
DELIMITER ;;
Allora puoi fare:
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;;
Tuttavia, poiché in questo caso il tuo trigger contiene solo un'istruzione, non è necessario utilizzare un BEGIN ... END
blocco di istruzioni composte
e potrebbe quindi evitare di modificare del tutto i delimitatori:
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'
)
;