Aby váš klient MySQL neinterpretoval ;
který ukončí INSERT
příkaz jako konec CREATE TRIGGER
musíte jej sdělit, že chcete použít jiný oddělovač příkazů.
V mysql
klient příkazového řádku, můžete to provést pomocí DELIMITER
příkaz
. Chcete-li například změnit oddělovač příkazu na dvojitý středník:
DELIMITER ;;
Pak můžete udělat:
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;;
Protože však v tomto případě váš spouštěč obsahuje pouze jeden příkaz, nemusíte používat BEGIN ... END
složený blok příkazů
a mohl by se proto vyhnout změně oddělovačů úplně:
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'
)
;