2014-02-05 18 views
-1
CREATE TRIGGER test BEFORE INSERT ON MYTABLE 
FOR EACH ROW 
    BEGIN 
     IF break < 0 THEN 
      SIGNAL sqlstate '45000' 
      set message_text = 'ERROR'; 
     END IF; 
    END; 

這會引發語法錯誤,我無法找到它。以下MySQL觸發器中的錯誤是什麼

+0

此代碼顯示語法錯誤,我無法找到它。 – Amber

回答

0

您需要更改MySQL用作行尾標記的分隔符。您需要爲CREATE TRIGGERCREATE PROCEDURE執行此操作,因爲如果您不使用MySQL,則會將第一個分號視爲命令的結尾並過早完成處理 - 因此會出現語法錯誤。

這樣做:

DELIMITER $$ 

CREATE TRIGGER test BEFORE INSERT ON MYTABLE 
FOR EACH ROW 
    BEGIN 
     IF break < 0 THEN 
      SIGNAL sqlstate '45000' 
      set message_text = 'ERROR'; 
     END IF; 
    END$$ 
DELIMITER ; 

現在,MySQL將繼續處理您的CREATE TRIGGER命令,直到它達到$$,幷包括分號作爲觸發腳本的一部分。請注意,我完成後將分隔符設置回分號。