如何满足条件时自动启动Sql语句?

时间:2014-08-29 12:00:37

标签: sql-server-2008 triggers

我有一个包含Training列和T_StartDate列的表T_EndDate,依此类推。现在我想如果保存T_EndDate与今天的日期匹配,我希望该列的记录应该自行删除。为此,我已经在程序中编写了一些代码,但我认为这不会像预期那样有效,因为程序无法自动启动。 所以对于这个问题,我从互联网上读到,我需要一个触发器才能完成这样的功能。但是对触发器没有多少想法。 那么请告诉我怎么能这样做? 另外,我正在为我的桌子附上一张照片,以便你们了解结构。 提前致谢

enter image description here

1 个答案:

答案 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;

然后,您可以随意删除行 - 每月一次,每周一次。

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