sql >> Databasteknik >  >> RDS >> Mysql

Syntaxfel på MYSQL Trigger

För att din MySQL-klient inte ska tolka ; som avslutar INSERT sats som slutet av CREATE TRIGGER påstående, måste du informera den om att du vill använda någon annan påståendeavgränsare.

I mysql kommandoradsklient kan du göra detta med DELIMITER kommando . Till exempel, för att ändra din satsavgränsare till ett dubbelt semikolon:

DELIMITER ;;

Sedan kan du göra:

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

Men eftersom din utlösare i det här fallet bara innehåller ett påstående, behöver du inte använda en BEGIN ... END sammansatt uttalande block och kunde därför undvika att ändra avgränsare helt och hållet:

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



  1. Rails 5 SQL Injection

  2. Ta bort poster som inte finns i join

  3. Rotera/pivotera tabell med aggregering i Oracle

  4. Hur skriver man arrays till en Oracle 10g XE db med iBatis?