访问 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 ;

SQL fiddle

prev_low(和其他变量)的数据类型更改为您在 table 中使用的任何数据类型。