Ошибка MySQL в инструкции select внутри триггера



Я недавно начал работать над MySQL n прямо сейчас я хочу создать триггер, но 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.



Пожалуйста, помогите

568   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 отсутствует.

Comments

    Ничего не найдено.