[英]Syntax error on MYSQL Trigger
我的MYSQL觸發器出現錯誤。 我使用了各種形式的語法,這些語法在網上和互聯網上都可以找到,但是似乎沒有任何作用。 這是我使用的3個語法示例:
> 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;
>
> CREATE TRIGGER LOG_UPDATE BEFORE UPDATE ON WORKLOG
> FOR EACH ROW BEGIN
> UPDATE WORKLOG_BACKUP SET BACKUPSTAMP = CURRENT_TIMESTAMP,
> UPDATE WORKLOG_BACKUP SET LOGNO = NEW.LOGNO,
> UPDATE WORKLOG_BACKUP SET JOBNO = NEW.JOBNO,
> UPDATE WORKLOG_BACKUP SET EMPLOYEENO = NEW.EMPLOYEENO,
> UPDATE WORKLOG_BACKUP SET WORKDATE = NEW.WORKDATE,
> UPDATE WORKLOG_BACKUP SET WORKTIME = NEW.WORKTIME,
> UPDATE WORKLOG_BACKUP SET CAUSE = 'UPDATE';
> END;
>
> CREATE TRIGGER LOG_UPDATE BEFORE UPDATE ON WORKLOG
> FOR EACH ROW BEGIN
> INSERT INTO WORKLOG_BACKUP VALUES(
> SET BACKUPSTAMP = CURRENT_TIMESTAMP,
> SET LOGNO = NEW.LOGNO,
> SET JOBNO = NEW.JOBNO,
> SET EMPLOYEENO = NEW.EMPLOYEENO,
> SET WORKDATE = NEW.WORKDATE,
> SET WORKTIME = NEW.WORKTIME,
> SET CAUSE = 'UPDATE');
> END;
我會向任何人提供任何幫助。 我正在使用phpmyadmin。
為了使您的MySQL客戶端不解釋;
如果在CREATE TRIGGER
語句的末尾終止了INSERT
語句,則必須通知它您希望使用其他一些語句定界符。
在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'
)
;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.