2017-07-25 94 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