如何在一定时间后自动删除sql server中的记录

本文关键字:sql 删除 server 记录 定时间 | 更新日期: 2023-09-27 18:27:54

我在sql数据库中设置了临时用户帐户,存储我的网站用户的用户名、密码和添加日期。

我最初打算用程序删除这些记录,但现在我想知道sql server 2008是否有一个内置功能,允许在一天后自动删除记录。

这将解决用户在其临时帐户关闭后能够继续登录系统的问题

感谢

如何在一定时间后自动删除sql server中的记录

您可以创建一个SQL Job来每天运行并执行指定的存储过程。

http://technet.microsoft.com/en-us/library/ms190268.aspx

您可以让程序执行此操作,或者设置sql代理作业。

您可以在不实际删除记录的情况下获得所需内容。您可以在表中添加一个计算列来说明记录是否有效。

 IsValid as (case when getdate() - CreatedAt > 1 then 0 else 1 end)

您也可以对记录中的关键字段执行此操作,因此无法找到它们:

_name varchar(255),
name as (case when getdate() - CreatedAt < 1 then _name end)

然后,您可以使用一个视图来访问该表:

create vw_Logins as
    select name, . . .
    from t
    where isValid = 1;

然后,在您空闲的时候,如果出于性能原因需要,您实际上可以删除这些行。

编辑:

如果您将视图表述为:,则实际上不需要计算列

create vw_Logins as
    select name, . . .
    from t
    where getdate() - CreatedAt < 1;

创建一个存储过程来执行此操作,然后按照此处的说明安排SPROC的运行。

DELETE FROM myTable
WHERE timeStamp < DATEADD(Day, DATEDIFF(Day, 0, GetDate())-1, 0)