2013-05-02 141 views
3

我想創建一個觸發器來插入一個新的行有條件地基於另一個表上的插入...我似乎無法指定語法。 這裏是我迄今:mysql觸發器不工作?

DELIMETER $$ 
CREATE TRIGGER overPricedCar 
    AFTER INSERT ON cars 
    FOR EACH ROW 
    BEGIN 
     IF (new.sellPrice > '80000')THEN 
     INSERT INTO listings VALUES(new.carName,'GOLD','0',' '); 
     END IF; 
    END$$ 
DELIMETER ; 

出於某種原因,我不斷收到一個錯誤,他們的語法似乎是好了,我不知道,我可能出了問題。

編輯

糾正錯字後,觸發 '作品'。

我添加了一個註釋,當觸發器發生時輸出。 我已經測試過它,並且輸出消息被打印到屏幕上,但觸發實際上並沒有完成插入:

DELIMITER $$ 
CREATE TRIGGER overPricedCar 
    BEFORE INSERT ON cars 
    FOR EACH ROW 
    BEGIN 
     IF (new.sellPrice > '80000')THEN 
     INSERT INTO listings VALUES(new.carName,'GOLD','0',' '); 
     SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "New Gold car!"; // this line throws it off 
     END IF; 
    END$$ 
DELIMITER ; 

我在哪裏可以把我想打印的時候這個觸發運行屏幕上的信息?

+0

且誤差?? – jcho360 2013-05-02 17:19:54

+0

@ jcho360#1064 - 你的SQL語法錯誤;檢查對應於你的MySQL服務器版本在1號線 – shnozolla 2013-05-02 17:20:29

+0

使用附近的「分隔符$$ CREATE TRIGGER overPricedCar INSERT ON汽車 FOR EACH ROW B之後」正確的語法手冊有什麼錯誤? – 2013-05-02 17:20:58

回答

5

錯字:

DELIMETER 
    ^--- should be an I: DELIMITER 
+0

#WTF?你是怎麼看到的?!不錯的工作+1 – jcho360 2013-05-02 17:22:05

+0

哇!這些錯別字正在殺死我!我找不到問題,我要打印一個巨大的標誌,並將其掛在我的桌子前面「檢查TYPOS」tnx。 – shnozolla 2013-05-02 17:25:33

+0

@Marc B當我插入觸發器時,沒有記錄被輸入(既不是'汽車'也不是'列表'),但是消息是否被觸發? – shnozolla 2013-05-02 17:51:34