【发布时间】:2017-04-13 15:58:08
【问题描述】:
我需要一个动态列,以便根据从现在到日期列 Expiration Date 之间的天数计算列 DaysToExpiration。
我的计划是添加一个在表的 SELECTstatement 上触发的触发器。
- 这可能吗?怎么样?
- 有没有更好的方法来解决这个问题?
【问题讨论】:
-
是的,计算列将是更好的选择 IMO
-
表上的视图是要走的路,创建一个触发器来将信息存储在其他地方,甚至有一个计算列来显示 DaysToExpiration 似乎过度杀戮,有些人甚至可能会说违反数据库规范化规则。
-
@M.Ali 视图是个好主意。但我很好奇,为什么你认为它与计算列不同?为什么你认为它更好?
-
@Lamak 为什么它比计算列好,我想没有你不需要的额外列是一件好事,不必维护额外的列,你甚至不能创建任何关于它的索引等等。我希望你明白这一点。当值需要在插入时计算并且它是持久的(持久列也允许在该列上创建索引)时,计算列通常是一个好主意,例如
DaysToExpiration(需要在被查询时计算)在我看来,视图是一个更好的选择 -
对 (1) 的响应:NO - SQL Server 在
SELECT上没有任何触发器 ....
标签: sql-server triggers calculated-columns