我在MySQL的table1中有四列(日期,开放,高,低,关闭, 计算)。我试图找出一种创建触发器的方法,以便在表1中更新新值时,计算字段将使用先前的行值进行更新。我目前正在使用以下触发器使用当前高,当前低和当前关闭来更新计算字段
DELIMITER //
create TRIGGER `updatetable1` before insert ON `table1` FOR EACH ROW begin
set NEW.Calculation=((NEW.High-New.Low)*0.118)+NEW.Close;
end //
DELIMITER ;
现在我想使用以下逻辑稍微修改一下公式:
Calculation (i) =((High(i-1) -Low(i-1))*0.118)+Close(i-1);
如何在此触发器中访问上一个行的高,低和关闭值来更新当前计算的行值?
示例:
答案 0 :(得分:1)
您可以按如下方式重写触发器:
DELIMITER //
create TRIGGER `updatetable1` before insert ON `table1` FOR EACH ROW
begin
declare prev_low float;
declare prev_high float;
declare prev_close float;
select low, high, close
into prev_low, prev_high, prev_close
from table1
order by date desc
limit 1;
set NEW.Calculation=(prev_high-prev_low)*0.118 + prev_close;
end//
DELIMITER ;
将prev_low
(和其他变量)的数据类型更改为您在表中使用的任何数据类型。