【发布时间】:2016-11-18 07:44:54
【问题描述】:
图书(B_ID为PK)
| B_ID | Name | Unit_Price|
|------+---------+-----------|
| B01 | Math | 25 |
| B02 | Science | 34 |
顺序(O_ID为PK)
| O_ID | Date | Total_Price |
|------+---------+-------------|
| O01 | 12/1/16 | NULL |
| O02 | 20/3/16 | NULL |
订单详情(O_ID,B_ID 是复合 PK,其中两个 ID 都是上表的 FK)
| O_ID | B_ID | Quantity |
|------+------+-----------|
| O01 | B01 | 2 |
| O01 | B02 | 1 |
| O02 | B02 | 5 |
如何通过将 NULL 替换为计算结果来将计算插入到 Total_Price(Unit_Price * Quantity)。我尝试使用 CTE 解决它,但我不喜欢在添加新记录(Exp: O03)时我需要再次运行 CTE 来更新它。
【问题讨论】:
-
如果你存储一个计算值,你引入一个存储、计算的值与原始基础数据不一致的机会.理想情况下,不要存储这些值,除非或直到证明按需计算的性能(如有必要,将逻辑放在视图中)不足。 然后考虑存储该值,但如果可能,请使用内置机制来确保数据库系统自动维护该值,而不是您必须记住重新计算它。
标签: sql sql-server sql-server-2014 calculated-columns computed-field