2

最近、MySQL の作業を開始しました。現在、トリガーを作成したいのですが、MySQL が構文でエラーを返しています。

delimiter $$;
create trigger abc after insert on ratings
for each row
    begin
        set @n1 = select avg(rating) from ratings join users where ratings.uname=users.uname 
        and ratings.bookid=new.bookid users.`type`='admin' or users.`type`='critic';
        update books set avgcriticrating = @n1 where bookid=new.bookid;
end;

select ステートメントは、単独で起動すると完全に実行されますが、トリガー内で使用するとエラーが発生します。

MySQLが与えるエラーは次のとおりです

#1064 - 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 'select avg(rating) from ratings join users where ratings.uname=users.uname an' at line 4

書籍と評価テーブルの両方に、bookid というフィールドが含まれています。

助けてください

4

1 に答える 1

1

select ステートメントから単一の値が必要な場合は、ステートメントを (括弧) で囲む必要があります。

set @n1 = (select avg(rating) from ratings join users where ratings.uname=users.uname 
    and ratings.bookid=new.bookid users.`type`='admin' or users.`type`='critic');

次のエラーは で発生しますnew.bookid users-andまたはor欠落している可能性があります。

于 2012-10-05T20:43:35.483 に答える