0

ステートメントが true の場合にリレーションの更新を許可しないトリガーを作成しようとしていますが、問題が発生しています

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 構文にエラーがあります。near 'IN (SELECT speed FROM pc AS pc1) AND pc1.price < new.price) THEN DROP new を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

同じ速度の PC よりも価格が高い場合、PC を自分の PC 関係に入れないようにしています。

更新を許可しないようにするには、このトリガーをどのように記述すればよいでしょうか?

4

2 に答える 2

0

ステートメントを失敗させるには、トリガーで SIGNAL ステートメントを使用してエラーを発生させます。

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

于 2012-04-13T18:23:53.697 に答える
0

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

new.speed IN( ... )

;また、アフターを逃したと思いますTHEN DROP new

于 2012-04-13T18:00:40.150 に答える