MySQL后两行之间的差异

问题描述 投票:-1回答:1

我有一个简单的mysql表,其中包含三列:ID(自动增量),Value(浮点数)和差(浮点数)。每5秒钟插入一个新行,在差异列中添加一个Value和NULL。

我想设置一个存储过程,当插入新行时自动触发该存储过程,该过程将记录n的值与(n- 1)记录。

因此,每个新行(n)的差异列将为value(n)-value(n-1)。

您能帮我编写存储过程吗?

mysql stored-procedures triggers procedure difference
1个回答
0
投票

您需要在插入表之前先建立触发器:

CREATE DEFINER=`root`@`localhost` TRIGGER `tablename_BEFORE_INSERT` 
BEFORE INSERT ON `tablename` FOR EACH ROW BEGIN
    DECLARE old_value FLOAT;

    SELECT value INTO old_value FROM tablename ORDER BY id DESC LIMIT 1; 
    SET NEW.diff = NEW.value - old_value;
END;
© www.soinside.com 2019 - 2024. All rights reserved.