2012-04-13 8 views
0

内のクエリをドロップ私は文が真である場合には関係の更新を許可しないようにトリガを記述しようとしています、と私は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; 

いくつかのトラブルに実行していますERROR 1064( 42000):SQL構文にエラーがあります。 IN「と近くに使用する権利 構文についてはMySQLサーバのバージョンに対応 マニュアルをチェックし、新しい

私がドロップすると、pc1.price < new.price)(PC1 AS PCから速度を選択)同じ速度のPCよりも高い価格であれば、PCのPC関係にPCを許可しないようにしようとしています。

更新を許可しないようにするには、このトリガーをどのように書き込むことができますか?

答えて

0

ISは余分です。あなたは、次の構文を使用する必要があります。

new.speed IN(...) 

また、私はあなたがTHEN DROP new;を逃したと思います。

+0

これは一部に役立ちます。しかし、どのようにして私のthenステートメントを変更して、更新が行われないようにすることができますか? –

+0

これはまだ役立ちません。どのような条件が満たされない場合、MySQLが変更を許可しないようにするにはどうすればよいですか? –

+0

これは簡単な方法ではないようです。しかし、あなたはこのような回避策を試すことができます:http://forums.mysql.com/read.php?99,99214,99300#msg-99300。 –