sql >> Base de Datos >  >> RDS >> Mysql

Error de sintaxis en MYSQL Trigger

Para que su cliente MySQL no interprete el ; que termina el INSERT declaración como el final de CREATE TRIGGER instrucción, debe informarle que desea utilizar algún otro delimitador de instrucción.

En el mysql cliente de línea de comandos, puede hacerlo con DELIMITER comando . Por ejemplo, para cambiar el delimitador de su declaración a un doble punto y coma:

DELIMITER ;;

Entonces puedes hacer:

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;;

Sin embargo, debido a que en este caso su disparador solo contiene una declaración, no necesita usar un BEGIN ... END bloque de declaraciones compuestas y, por lo tanto, podría evitar cambiar los delimitadores por completo:

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'
  )
;