2011-02-16 26 views
1

我正在創建更新操作的觸發器。但是,當在MySQL5中創建觸發器時,它提供了一個錯誤。在mysql5更新操作中創建觸發器時出錯?

觸發:

 
CREATE TRIGGER `test`.`Employee_Trigger_Update` 
    AFTER UPDATE ON `test`.`employee` 
    FOR EACH ROW 
    BEGIN 
    INSERT into `test`.`Employee_log` 
    (id,description) 
    VALUES 
    (old.id, CONCAT('Id with ' 
         , old.id 
         ,' is modified from ' 
         , OLD.start_date 
         , ' to ' 
         , NEW.start_date) ); 

錯誤

錯誤代碼:1064您的SQL語法錯誤;檢查對應於你的MySQL服務器版本的權利 語法在第8行至附近使用「」(取0毫秒)

的 手冊,如果有一個人能請幫助它,將不勝感激

+0

我剛剛在2分鐘前回答了同樣問題的問題。請參閱http://stackoverflow.com/questions/5013246/how-to-create-a-trigger-for-delete-php-myadmin – 2011-02-16 06:54:08

回答

2

你需要使用分號以外的一個不同的分隔符

DELIMITER $$ 

CREATE TRIGGER `test`.`Employee_Trigger_Update` 
    AFTER UPDATE ON `test`.`employee` 
    FOR EACH ROW 
    BEGIN 
    INSERT into `test`.`Employee_log` 
    (id,description) 
    VALUES 
    (old.id, CONCAT('Id with ',old.id,' is modified from ',OLD.start_date, ' to ', NEW.start_date)); 
END $$ 

DELIMITER ; 
1

有一件事我明白了,你沒有 - 在觸發宣告結束END;,見實例和文檔here

+0

我已經使用「結束」;在查詢結束但現在它給錯誤 - 錯誤代碼:1064 您的SQL語法中有錯誤;請查看與您的MySQL服務器版本對應的手冊,以便在第1行 (採取0 ms)的'END'附近使用正確的語法。 – Yugal 2011-02-16 06:55:26

+0

請參閱@RolandoMySQLDBA答案。 – 2011-02-16 07:01:58