sql >> Database teknologi >  >> RDS >> Mysql

Syntaksfejl på MYSQL Trigger

For at din MySQL-klient ikke skal fortolke ; der afslutter INSERT sætning som slutningen af ​​CREATE TRIGGER erklæring, skal du informere den om, at du ønsker at bruge en anden sætningsafgrænser.

I mysql kommandolinjeklient, kan du gøre dette med DELIMITER kommando . For eksempel for at ændre dit sætningsskilletegn til et dobbelt semikolon:

DELIMITER ;;

Så kan du gøre:

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 fordi din trigger i dette tilfælde kun indeholder én erklæring, behøver du ikke bruge en BEGIN ... END sammensat erklæringsblok og kunne derfor helt undgå at ændre afgrænsninger:

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. Ugyldigt parameternummer, PDO ved dubletopdatering mislykkes

  2. Rails Resque-arbejdere fejler med PGError:Server lukkede forbindelsen uventet

  3. Hvordan får man navnet på det overordnede element i et Oracle XPath-udtryk?

  4. Postgres dynamiske kolonneoverskrifter (fra en anden tabel)