sql >> Databáze >  >> RDS >> Mysql

Chyba syntaxe na spouštěči MYSQL

Aby váš klient MySQL neinterpretoval ; který ukončí INSERT příkaz jako konec CREATE TRIGGER musíte jej sdělit, že chcete použít jiný oddělovač příkazů.

V mysql klient příkazového řádku, můžete to provést pomocí DELIMITER příkaz . Chcete-li například změnit oddělovač příkazu na dvojitý středník:

DELIMITER ;;

Pak můžete udělat:

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

Protože však v tomto případě váš spouštěč obsahuje pouze jeden příkaz, nemusíte používat BEGIN ... END složený blok příkazů a mohl by se proto vyhnout změně oddělovačů úplně:

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. Připojení k fondu připojení MySQL .Net.Open() je velmi pomalé

  2. Jak mohu uložit pole booleovských hodnot v databázi MySql?

  3. Rozdíl mezi CLOB a BLOB od DB2 a Oracle Perspective?

  4. jak vytvořit spouštěč aktualizace pro zvýšení/snížení 1 čísla na celkový počet hlasů