1

我希望我的 mysql 表中的一行始终等于另外两行的差异,但我似乎能够做到这一点的唯一方法是第一次将其设置为 0,然后运行更新命令。有没有办法让这种行为自动化,所以我永远不必考虑它?欣赏建议!

4

3 回答 3

5

您可能想使用触发器进行调查,触发器设置为在另一个数据库对象上发生特定操作时运行。例如,

CREATE TRIGGER foobar AFTER UPDATE ON table
  FOR EACH ROW SET foo = foo + NEW.bar;
于 2013-07-16T19:25:45.310 回答
0

您也可以使用视图执行此操作:

create vw_table as
    select t.*, (col2 - col1) as diff
    from t;

然后,视图将在使用时进行计算,因此结果始终是最新的。您不需要将数据存储在单独的列中。

缺点是您不能在结果上创建列(在 MySQL 中)。为此,您需要一个单独的列,按照 Gian 的描述进行维护。

于 2013-07-16T19:34:13.383 回答
0

这个有什么用例?

为了数据库的完整性,您希望避免在出现问题时使用依赖值。这是我一开始并没有看到重点但在清理之后有点尊重的事情之一。

如果您确定它是您想要的,并且您可以使用触发器在任何时候更新此更新。

于 2013-07-16T19:34:41.803 回答