我正在和一个用户表一起工作,并希望把“期限期限结束”.基本上,每个新用户从试用期的一部分进入他们的两个月.我看到我可以在我的用户表的列中放一个公式,但是我想知道是否应该有一个脚本来更新,或者这是使用计算列的可接受的时间.我访问这个表的各种事情,并会偶尔更新用户的行基于性能里程碑成就.申请日期永远不会更改/更新.
我的问题是:在这种情况下使用计算列是一个很好的做法,或者每次更新该行时都会重新计算(尽管我不会更新App Date)?当我将来更新行时,我不想创建更多的开销.
公式我在列定义中使用了Probation结束日期:
(dateadd(day,(-1),dateadd(month,(3),dateadd(day,(1)-datepart(day,[APP_DT]),[APP_DT]))))
解决方法
看到这个日期很有可能永远不会改变一旦设置,它可能不是一个计算列的好候选人.
毕竟,一旦你在这个表中插入一行,就可以很容易地计算出那个“试用期结束”的日期,然后(例如触发器),一旦设置,那个日期就不会改变.
所以当你绝对可以这样做的时候,我可能更喜欢使用刚刚计算一次的AFTER INSERT触发器(或INSERT操作的存储过程),然后存储该日期.
另外,就像一个单挑:一个计算列只有公式正在计算每次访问它 – 只要知道.也就是说,除非您指定了PERSISTED关键字,否则在结果中将结果存储在行中的其他数据旁边,这将更好地适用于此,因为该值一旦计算,就不会被绑定到再次改变