2017-04-13 187 views
0

我需要一个动态列,以便根据从现在到日期列Expiration Date之间的天数来计算列DaysToExpirationSQL Server:在SELECT上触发触发器? (计算列)

我的计划是在表格的SELECT声明中添加一个触发器。

  1. 这可能吗?怎么样?
  2. 有没有更好的方法来解决这个问题?
+1

是的,一个计算列将是一个更好的选择IMO – Lamak

+1

表中的视图是要走的路,创建一个触发器来存储信息的其他地方,甚至有一个计算列来显示DaysToExpiration似乎是一个过度杀手,有些甚至可能会违反数据库规范化规则。 –

+0

@ M.Ali一个观点是一个好主意。但我很好奇,你为什么认为它会和计算列不同?为什么你认为它更好? – Lamak

回答

0

不,没有规定在SELECT操作上有触发器。您可以使用存储过程,它接受从SELECT查询中提取的参数,并在所需的SELECT查询后调用此过程。

1

你说:“我的计划是添加一个触发器在表的SELECT语句上触发。”

在那种情况下,为什么要有一个列,为什么不在最终查询中选择呢?

Select DateDiff(day,getdate(),ExpirationDate) AS [DaysToExpiration] 

如果它必须被保存并存储在一列中,那么你可以使它成为一个计算列,如评论中所建议的那样。或者,您可以在UPDATE/INSERT上触发表格,以便在插入或更新ExpirationDate时将DaysToExpiration列设置为所提供代码的结果。