Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Syntaxfehler bei MYSQL-Trigger

Damit Ihr MySQL-Client den ; nicht interpretiert das beendet den INSERT -Anweisung als Ende des CREATE TRIGGER -Anweisung müssen Sie ihr mitteilen, dass Sie ein anderes Anweisungstrennzeichen verwenden möchten.

Im mysql Kommandozeilen-Client können Sie dies mit dem DELIMITER tun Befehl . So ändern Sie beispielsweise Ihr Anweisungstrennzeichen in ein doppeltes Semikolon:

DELIMITER ;;

Dann können Sie Folgendes tun:

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

Da Ihr Trigger in diesem Fall jedoch nur eine Anweisung enthält, müssen Sie kein BEGIN ... END zusammengesetzter Anweisungsblock und könnte daher ganz auf das Ändern von Trennzeichen verzichten:

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