2011-10-17 168 views
1

所以我有以下查詢:與MySQL觸發查詢語法錯誤

CREATE TRIGGER `before_delete` 
    BEFORE DELETE ON `abc` FOR EACH ROW 
    BEGIN 
     DELETE FROM def WHERE OLD.id = objID1 OR OLD.id = objID2; 
     DELETE FROM ghi WHERE OLD.id = objID; 
    END; 

但那麼MySQL抱怨說,在1號線....

我做了什麼是附近「END」語法錯誤錯誤?

回答

4

您需要利用DELIMTIER技巧在過程塊中包含多個語句。否則,它無法區分程序結束和其內部語句結束的區別。在documentation頁面上,有一個使用delimiter關鍵字的示例。

爲了節省您的去那個頁面,環顧四周的麻煩,我認爲這將解決這個問題:

DELIMITER $$ 
CREATE TRIGGER `before_delete` 
BEFORE DELETE ON `abc` FOR EACH ROW 
BEGIN 
    DELETE FROM def WHERE OLD.id = objID1 OR OLD.id = objID2; 
    DELETE FROM ghi WHERE OLD.id = objID; 
END $$ 
DELIMITER ;