Mysql在UPDATE上计算Timediff

时间:2017-12-01 07:54:02

标签: mysql time calculated-columns

当我向表中添加一行时,我会自动获得“created_at”和“updated_at”的当前时间。因此,每当我使用更新查询时,我都会获得“updated_at”的当前时间,然后使用SELECT TIME_TO_SEC(timediff(updated_at, created_at)) from abc手动计算“created_at”和“updated_at”之间的时差 命令。

现在我想知道是否有可能创建一个能够以秒为单位自动计算时差的表并将其写入另一个名为“timediff”的列,例如添加timediff ON UPDATE TIME_TO_SEC(timediff(updated_at, created_at))

我尝试了类似下面的内容,但它不起作用。

CREATE TABLE abc (
        id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
        pieces INT(6), 
        created_at TIMESTAMP NOT NULL DEFAULT NOW(),
        updated_at TIMESTAMP NOT NULL DEFAULT NOW() ON UPDATE NOW(),
        timediff ON UPDATE TIME_TO_SEC(timediff(updated_at, created_at)) -- that's the issue
        )

我不想搞乱触发器或复杂的东西,我正在寻找最有效和最简单的解决方法。

由于

1 个答案:

答案 0 :(得分:0)

从mysql手册......

  

触发器是与表关联的命名数据库对象,   并在表格发生特定事件时激活。一些   用于触发器的用途是执行要插入的值的检查   表或对更新中涉及的值执行计算。

因此,触发器适用于您描述的情况。 Full info