Pour que votre client MySQL n'interprète pas le ;
qui termine le INSERT
comme fin de CREATE TRIGGER
déclaration, vous devez l'informer que vous souhaitez utiliser un autre délimiteur de déclaration.
Dans le mysql
client en ligne de commande, vous pouvez le faire avec le DELIMITER
commande
. Par exemple, pour remplacer votre délimiteur d'instruction par un double point-virgule :
DELIMITER ;;
Ensuite, vous pouvez faire :
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;;
Cependant, comme dans ce cas votre déclencheur ne contient qu'une seule instruction, vous n'avez pas besoin d'utiliser un BEGIN ... END
bloc d'instruction composé
et pourrait donc éviter de changer complètement les délimiteurs :
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'
)
;