2017-07-25 93 views
0

我試圖更新特定的列,通過採取column_1值的行平均值,其中column_3 =MySQL不觸發

,但它給出了一個錯誤column_2更新同桌不同列的AVG函數

我的代碼

Error: Can't update table 'moving_average' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

delimiter $$ 

Create TRIGGER takeaverage AFTER insert ON moving_table 
FOR EACH ROW 
BEGIN   
update moving_table b, (select avg(price) avg_ from moving_table) v 
set 
    b.moving_avg = v.avg_price; 


END; 

回答

1

你不能這樣做是,作爲每documentaion

存儲函數或觸發器不能修改表是已經被用於 (讀取或寫入)通過調用該函數 或觸發器的語句。

我寧願寫BEFORE INSERT觸發,並與現有的平均行和新price更新:New.moving_avg

+0

感謝您的回覆,你可以給我一個具體的查詢爲例 – Shaik