【发布时间】:2020-02-06 11:30:14
【问题描述】:
我想让列“CurrentCapacity”成为所有引用特定列的总和。
假设SecTable 中有三行,它们都有FirstTableID = 1。 Size 值为 1、1 和 3。
FirstTable 中 ID = 1 的行现在在 CurrentCapacity 列中的值应为 5。
我怎样才能做到这一点以及如何在插入、更新和删除时自动执行?
谢谢!
第一个表
+----+-------------+-------------------------+
| ID | MaxCapacity | CurrentCapacity |
+----+-------------+-------------------------+
| 1 | 5 | 0 (desired result = 5) |
+----+-------------+-------------------------+
| 2 | 5 | 0 |
+----+-------------+-------------------------+
| 3 | 5 | 0 |
+----+-------------+-------------------------+
安全表
+----+-------------------+------+
| ID | FirstTableID (FK) | Size |
+----+-------------------+------+
| 1 | 1 | 2 |
+----+-------------------+------+
| 2 | 1 | 3 |
+----+-------------------+------+
【问题讨论】:
-
请在问题中作为文本表格提供示例数据和所需结果。还要解释为什么仅仅使用
join/group by不足以满足您的应用程序。复制数据通常不是一个好主意。 -
改为创建一个视图,或者至少使用触发器。
-
我不会存储可以按需计算的数据。
-
@GordonLinoff 我添加了文本表。我认为这是我想要创建的触发器。因此,当我在 SecTable 中插入、更新或删除时,应计算 CurrentCapacity 以正确的值。
-
这里似乎涵盖了您想要的内容:stackoverflow.com/questions/2769007/… 您可以创建一个用户定义的函数来获取值,然后在计算列中使用该用户定义的函数
标签: sql sql-server