2013-03-08 122 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我已經在Review表上運行SELECT聲明,它給出了沒有任何問題的結果。

編輯:我意識到我不能在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 2013-03-08 07:54:17

+0

哈哈,哇!我幾乎讀了那個鏈接中的所有東西,並沒有注意到SELECT不是** trigger_event **!那麼你建議我可以做什麼? – mavili 2013-03-08 07:56:43

+0

我不知道你在努力達到什麼目的。檢查一個診所平均「看到」多少? – AmazingDreams 2013-03-08 07:59:05

回答

1

trigger_event不能是一個select 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:{BEFORE | AFTER}

trigger_event:{INSERT |更新| DELETE}