SQL Server:在SELECT上触发触发器? (计算列)
问题描述:
我需要一个动态列,以便根据从现在到日期列Expiration Date
之间的天数来计算列DaysToExpiration
。SQL Server:在SELECT上触发触发器? (计算列)
我的计划是在表格的SELECT
声明中添加一个触发器。
- 这可能吗?怎么样?
- 有没有更好的方法来解决这个问题?
答
不,没有规定在SELECT操作上有触发器。您可以使用存储过程,它接受从SELECT查询中提取的参数,并在所需的SELECT查询后调用此过程。
答
你说:“我的计划是添加一个触发器在表的SELECT语句上触发。”
在那种情况下,为什么要有一个列,为什么不在最终查询中选择呢?
Select DateDiff(day,getdate(),ExpirationDate) AS [DaysToExpiration]
如果它必须被保存并存储在一列中,那么你可以使它成为一个计算列,如评论中所建议的那样。或者,您可以在UPDATE/INSERT上触发表格,以便在插入或更新ExpirationDate时将DaysToExpiration列设置为所提供代码的结果。
是的,一个计算列将是一个更好的选择IMO – Lamak
表中的视图是要走的路,创建一个触发器来存储信息的其他地方,甚至有一个计算列来显示DaysToExpiration似乎是一个过度杀手,有些甚至可能会违反数据库规范化规则。 –
@ M.Ali一个观点是一个好主意。但我很好奇,你为什么认为它会和计算列不同?为什么你认为它更好? – Lamak