MySQL触发器,在触发器内删除查询

时间:2012-04-13 17:58:25

标签: mysql

我试图写一个触发器,如果​​一个语句为真,就不允许更新关系,而且我遇到了麻烦

CREATE TRIGGER noPriceLowerSpeed
BEFORE UPDATE
ON pc
FOR EACH ROW
BEGIN
IF(new.speed IS IN (SELECT speed FROM pc AS pc1) AND pc1.price < new.price) 
THEN DROP new
END IF;
  

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在'IN(SELECT速度FROM pc AS pc1)和pc1.price&lt;附近使用的语法   new.price)THEN DROP new

我试图不让PC进入我的电脑关系,如果它的价格高于具有相同速度的电脑。

如何编写此触发器以仅允许更新?

2 个答案:

答案 0 :(得分:0)

IS是多余的。您应该使用以下语法:

new.speed IN( ... )

此外,我认为您在;之后错过了THEN DROP new

答案 1 :(得分:0)

要使语句失败,请使用触发器中的SIGNAL语句来引发错误。

http://dev.mysql.com/doc/refman/5.5/en/signal.html