Para que seu cliente MySQL não interprete o
;
que encerra o INSERT
instrução como o final do CREATE TRIGGER
declaração, você deve informar que deseja usar algum outro delimitador de declaração. No
mysql
cliente de linha de comando, você pode fazer isso com o DELIMITER
comando
. Por exemplo, para alterar seu delimitador de instrução para um ponto-e-vírgula duplo:DELIMITER ;;
Então você pode fazer:
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;;
No entanto, como nesse caso seu gatilho contém apenas uma instrução, você não precisa usar um
BEGIN ... END
bloco de instruções compostas
e poderia, portanto, evitar alterar os delimitadores completamente: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'
)
;