Mysql
 sql >> база данни >  >> RDS >> Mysql

Синтактична грешка на MYSQL Trigger

За да не може вашият MySQL клиент да интерпретира ; който завършва INSERT оператор като край на CREATE TRIGGER израз, трябва да го информирате, че желаете да използвате друг разделител на израз.

В mysql клиент на командния ред, можете да направите това с DELIMITER команда . Например, за да промените разделителя на израза си на двойна точка и запетая:

DELIMITER ;;

След това можете да направите:

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

Въпреки това, тъй като в този случай вашият тригер съдържа само един оператор, не е необходимо да използвате BEGIN ... END съставен блок с изявления и следователно може да избегне пълната промяна на разделителите:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да проверите (или дори да зададете) съпоставяне в mdb (ms access) файл?

  2. Как да свържете низове в MySQL с CONCAT()

  3. Най-добрият начин да направите претеглено търсене в множество полета в mysql?

  4. Извличане на конкретни думи от текстово поле в mysql

  5. показване на данни от базата данни в падащия CodeIgniter