2017-04-08 14 views
0

これは私が書き込むトリガです。mysql:ERROR 1064(42000)in trigger

DELIMITER // 
create trigger after_insert_bid 
after insert on Bid 
for each row 
when exists(
    select * 
    from Item 
    where ItemID = new.ItemID) 
begin 
update Item set Item.currently = NEW.amount where Item.itemID = NEW.itemID; 
end;// 
DELIMITER ; 

それはエラーがあります。

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'when exists(
SELECT * 
FROM Item 
WHERE ItemID = new.ItemID 
) 
begin 
UPDATE Item SE' at line 4 
mysql> end; 

私は、MySQLに新しいですし、私はそれは簡単な質問ですけど、私は本当にエラーを発見する方法がわからない、ありがとう!

MySQLのバージョンは、あなたがアイテムIDだけで直接アイテムテーブルを更新項目テーブルに存在するかどうかをチェックする必要はありません5.1.73

+0

このエラーが見つかりました。このマニュアルで指定されているものと構文の違いを確認しましたか? – tadman

+0

私のバージョンは、mysql 5.1.73です。私はマニュアルでそれを見つけようとしましたが、うまくいきませんでした。 –

+0

そこにはいつでも 'EXISTS'を実行することができないので、別の方法が必要です。 trigger_event *タイプが何であるかを見てください。 – tadman

答えて

0

です。アイテムテーブルにItemIDが存在しない場合、テーブルは更新されません。

for each row 
begin 
    update Item set Item.currently = NEW.amount where Item.itemID = NEW.itemID; 
end 
関連する問題