За да не може вашият MySQL клиент да интерпретира ;
който завършва INSERT
оператор като край на CREATE TRIGGER
израз, трябва да го информирате, че желаете да използвате друг разделител на израз.
В mysql
клиент на командния ред, можете да направите това с DELIMITER
команда
. Например, за да промените разделителя на израза си на двойна точка и запетая:
DELIMITER ;;
След това можете да направите:
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;;
Въпреки това, тъй като в този случай вашият тригер съдържа само един оператор, не е необходимо да използвате BEGIN ... END
съставен блок с изявления
и следователно може да избегне пълната промяна на разделителите:
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'
)
;