【问题标题】:MySQL Difference Between last two rowsMySQL最后两行之间的区别
【发布时间】:2020-05-04 18:06:33
【问题描述】:

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

我想设置一个存储过程,在插入新行时自动触发,它用记录 n 的值和 (n -1) 记录。

所以每个新的行 (n) 差异列将是 value(n)-value(n-1)。

你能帮我写一下存储过程吗?

【问题讨论】:

    标签: mysql stored-procedures triggers procedure difference


    【解决方案1】:

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

    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;
    

    【讨论】:

    • 嗨 Slava,感谢您的帮助!如果新值为 0 并且我想要 diff = 0,您将如何管理?谢谢!
    • 只要使用IF NEW.value = 0 THEN NEW.diff = 0 ELSE SELECT value INTO old_value FROM tablename ORDER BY id DESC LIMIT 1; SET NEW.diff = NEW.value - old_value; END IF
    猜你喜欢
    • 2013-01-29
    • 2014-09-24
    • 2012-12-13
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    相关资源
    最近更新 更多