2014-08-29 42 views
0

我有一个表TrainingT_StartDateT_EndDate等。现在我想要如果保存T_EndDate与今天的日期相匹配,我希望该列的记录应该自己删除。为此,我在程序中编写了一些代码,但我认为这不会像预期的那样工作,因为程序无法自动启动。 因此,我从互联网上读到这个问题,我需要一个触发器来做这种功能。但对触发没有太多的想法。 那么请告诉我我该怎么做? 另外我附上了我的桌子的图片,让你们了解结构。 在此先感谢如何在条件满足时自动启动Sql语句?

enter image description here

+0

你为什么要删除记录?为什么不只是有一个“NoLongerValid”标志或类似的东西呢? – 2014-08-29 12:02:14

+0

是的!这会很好,如果我更新我的表并将标志设置为false。但没有想法这样做或自动查询。 #Gordan Linoff – 2014-08-29 12:04:44

回答

0

只需添加一个计算列:

create view v_Training as 
    select t.* 
    from Training 
    where IsValid = 1; 

然后,您可以:

alter table Training add IsValid as (case when t_enddate < cast(getdate() as date) then 1 else 0 end) 

然后,您可以使用此列或使用视图访问表在您的闲暇时间删除行 - 每月一次,每周一次。

否则,您需要设置一个作业,运行在正好午夜。否则,会有一段时间数据无效。而且,如果您因某种原因错过了更新,则可能会出现问题。