sql - SQL Server 代理在午夜删除记录
问题描述
我对 SQL 有点陌生,所以如果这个问题不是很清楚,我提前道歉。我想在 SQL Server 代理中创建一个作业,在 24 小时后删除一行。我的问题是 SQL Server 代理在午夜而不是 24 小时后删除记录,例如,如果我在下午 3 点创建记录,则将在上午 12 点而不是第二天下午 3 点删除记录。
有什么可以解决这个问题的。
谢谢您的帮助
解决方案
不要采取这种方法!使用视图,然后让作业清理。
-- Have an expiration column in the table
create table t (
. . .
expire_datetime datetime
);
-- Filter out the unexpired rows for the view
create view v_t as
select t.*
from t
where expire_datetime > getdate();
您可以expire_datetime
在创建记录时进行设置。或者,如果您愿意,也可以是创建日期时间加上 24 小时:
alter table t add expire_datetime as (dateadd(hour, 24, createdAt));
通过视图进行所有访问。然后,您可以定期运行作业以删除过期记录。你可以每天一次、每小时一次、每周一次——无论何时。