sql >> Database >  >> RDS >> Mysql

Syntaxisfout op MYSQL-trigger

Om ervoor te zorgen dat uw MySQL-client de ; . niet interpreteert dat de INSERT . beëindigt statement als het einde van de CREATE TRIGGER verklaring, moet u deze laten weten dat u een ander scheidingsteken voor de verklaring wilt gebruiken.

In de mysql opdrachtregelclient, kunt u dit doen met de DELIMITER opdracht . Als u bijvoorbeeld het scheidingsteken voor uw verklaring wilt wijzigen in een dubbele puntkomma:

DELIMITER ;;

Dan kun je het volgende doen:

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

Omdat uw trigger in dit geval echter maar één instructie bevat, hoeft u geen BEGIN ... END samengesteld instructieblok en zou daarom het veranderen van scheidingstekens helemaal kunnen vermijden:

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. Bedrijfslogica:database- of applicatielaag

  2. Overeenkomende subset selecteren in veel-op-veel-relatie

  3. Tabel SAMENVOEGEN, niets doen bij match

  4. Voeg bytea in postgresql json-type in