【发布时间】:2016-11-23 11:21:44
【问题描述】:
我有两张表,我们称它们为 A 和 B。它们具有一对多的关系。
表 A
Trxid int,
TotalAmount decimal(10,2)
表 B
Trxid int,
TblBcol Varchar,
Amount decimal(10,2)
表 B 包含表 A 的分解详细信息。
我的要求: 表 B 的 Amount 列的总和应等于表 A 的每个 trxid 的 TotalAmount 列。
是否有任何限制可以实现这一点或有其他方法吗?
【问题讨论】:
-
一种选择是用视图替换表 A。
-
其他选项可能是在
TableB上创建一个触发器,该触发器在TableA中插入或更新相应的行。但@destination-data 提出的想法更合适。 -
@destination-data 感谢您的回复。表 A 还包含其他列。将它们移到表 B 将导致冗余。
-
@Pramod 谢谢。但是表 B 的每一行插入都会根据总量进行检查,结果验证失败。
-
我有点不清楚 - A.TotalAmount 是单独填写还是必须始终是 B.Amount 的总和?如果单独填写并且仅用于检查文档有效性,那么在将行插入 B 时不应检查失败 - 否则您将无法插入任何内容,除非它包含全部金额。之后您必须验证整个文档,而不是 SQL 任务(但可以使用 SQL 过程)。
标签: sql sql-server constraints