我有一个包含Training
列和T_StartDate
列的表T_EndDate
,依此类推。现在我想如果保存T_EndDate
与今天的日期匹配,我希望该列的记录应该自行删除。为此,我已经在程序中编写了一些代码,但我认为这不会像预期那样有效,因为程序无法自动启动。
所以对于这个问题,我从互联网上读到,我需要一个触发器才能完成这样的功能。但是对触发器没有多少想法。
那么请告诉我怎么能这样做?
另外,我正在为我的桌子附上一张照片,以便你们了解结构。
提前致谢
答案 0 :(得分:0)
只需添加一个计算列:
alter table Training add IsValid as (case when t_enddate < cast(getdate() as date) then 1 else 0 end)
然后,您可以使用此列或使用视图访问该表:
create view v_Training as
select t.*
from Training
where IsValid = 1;
然后,您可以随意删除行 - 每月一次,每周一次。
否则,您需要将作业设置为在正好午夜运行。如果不是,则会有一段时间数据无效。而且,如果由于某种原因错过了更新,则可能会遇到问题。