2013-03-08 2 views
2

У меня есть следующий триггер ЗАЯВЛЕНИЕтриггер перед отборным

DELIMITER // 
CREATE TRIGGER rating 
BEFORE SELECT 
ON `clinic` 
FOR EACH ROW 
BEGIN 
    SET NEW.OLD.`rate` = (SELECT AVG(`rate`) FROM `Review` WHERE `Clinic_id` = NEW.OLD.`id`); 
END// 

Я пытался следовать инструкциям, приведенным здесь http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html но получаю ошибку синтаксиса. Что я делаю не так?

NB Я запустил инструкцию SELECT на столе Review, и это дает результат без проблем.

Отредактировано: Я понял, что у меня не может быть триггера до SELECT и поэтому решил обработать его на прикладном уровне. См. Это: http://forums.mysql.com/read.php?99,277396,277692#msg-277692

+3

Вы не можете установить триггер на SELECT. http://stackoverflow.com/questions/6137935/can-i-launch-a-trigger-on-select-statement-in-mysql – AmazingDreams

+0

ха-ха, ничего себе! Я прочитал почти все в этой ссылке и не заметил, что SELECT не был ** trigger_event **! Итак, что вы предлагаете мне сделать? – mavili

+0

Я не знаю, чего вы пытаетесь достичь. Проверьте, сколько клиник «видно» в среднем? – AmazingDreams

ответ

1

trigger_event не может быть выбранным trigger_event = {INSERT | ОБНОВЛЕНИЕ | DELETE}

CREATE 
[DEFINER = { user | CURRENT_USER }] 
TRIGGER trigger_name 
trigger_time trigger_event 
ON tbl_name FOR EACH ROW 
trigger_body 

trigger_time: {ПЕРЕД | ПОСЛЕ}

trigger_event: {INSERT | ОБНОВЛЕНИЕ | DELETE}

Смежные вопросы