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