访问 MySQL 触发器中的上一行值
Access previous row value in MySQL trigger
我在 table1 in MySQL 中有四列(日期、开盘价、最高价、最低价、收盘价、
计算)。我正在尝试找出一种创建触发器的方法,以便在 table 1 中更新新值时,Calculation 字段会使用先前的行值进行更新。我目前正在使用以下触发器更新 Calculation 字段,使用 current High、current Low 和 当前关闭
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);
如何访问此触发器中的 previous 行值的最高价、最低价和收盘价以更新计算的 当前 行值?
示例:
您可以按如下方式重写触发器:
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
(和其他变量)的数据类型更改为您在 table 中使用的任何数据类型。
我在 table1 in MySQL 中有四列(日期、开盘价、最高价、最低价、收盘价、 计算)。我正在尝试找出一种创建触发器的方法,以便在 table 1 中更新新值时,Calculation 字段会使用先前的行值进行更新。我目前正在使用以下触发器更新 Calculation 字段,使用 current High、current Low 和 当前关闭
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);
如何访问此触发器中的 previous 行值的最高价、最低价和收盘价以更新计算的 当前 行值?
示例:
您可以按如下方式重写触发器:
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
(和其他变量)的数据类型更改为您在 table 中使用的任何数据类型。