0

我正在尝试编写一个触发器,如果​​语句为真,则不允许更新关系,我遇到了一些麻烦

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;

ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'IN (SELECT speed FROM pc AS pc1) AND pc1.price < new.price) THEN DROP new 附近使用的正确语法

如果它的价格高于具有相同速度的 pc,我试图不允许 pc 进入我的 pc 关系。

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

4

2 回答 2

0

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

new.speed IN( ... )

另外,我认为您错过了;after THEN DROP new

于 2012-04-13T18:00:40.150 回答
0

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

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

于 2012-04-13T18:23:53.697 回答