2013-05-02 85 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