是否在SQL Server中自动删除一段时间后的记录?
我有一个表,它有两个属性:创建记录时的ID和Datetime 我如何触发(程序?)在(比如)1天后删除记录是否在SQL Server中自动删除一段时间后的记录?,sql,sql-server,sql-delete,Sql,Sql Server,Sql Delete,我有一个表,它有两个属性:创建记录时的ID和Datetime 我如何触发(程序?)在(比如)1天后删除记录 我想要一个每X次执行一次的任务,而不是手动执行。删除一天以上记录的语句是: DELETE FROM tableName WHERE DATEDIFF(day, getdate(), dateColumn) < -1 DELETE FROM tableName WHERE DATEDIFF(day,getdate(),dateColumn)
我想要一个每X次执行一次的任务,而不是手动执行。删除一天以上记录的语句是:
DELETE FROM tableName WHERE DATEDIFF(day, getdate(), dateColumn) < -1
DELETE FROM tableName WHERE DATEDIFF(day,getdate(),dateColumn)<-1
您需要使用任何可用的语言(例如php)对该语句进行cron
也就是说,当然很难想象一个场景,您首先要删除记录;) 您可以创建一个SQL作业,在一天后运行(或根据需要每天运行),并执行带有简单delete语句的指定存储过程 请关注下一个主题:-
我建议您使用SQL Server代理并编写一个存储过程,删除一天内经过的每一行 您可以在此找到如何使用Sql server代理作业 存储过程如下所示:
CREATE PROCEDURE DeleteRows()
AS
BEGIN
DELETE FROM mytable
WHERE (DATEDIFF(DAY, DATEADD(day, -1, DateColum), GETDATE())) >= 1
END
编辑:
where语句中的数字1为天。您可以将其更改为您想要使用的内容。谢谢!你能简单解释一下-1部分吗?此外,是否有可能使其每天自动执行?我听过一个叫做SQL作业的东西,但我不确定。关于这个场景,是关于忘记通过电子邮件发送的密码链接-链接应该在一段时间后过期-负1相当于“一天以前”(因此昨天):)这些存储过程的家伙听起来很酷,所以这可能就是你要找的:)我要投我不明白的那个,因为它可能是对的!HahaTrigger与事件类似,当某个操作发生(即插入、更新、删除)时会触发。你所说的是一项计划任务。通常在sql server中,您会创建一个过程来删除所需的行。然后创建一个sql作业,按照给定的计划运行,以执行该过程。不客气。我建议您多读一些关于sql作业的文章,这样您就可以以您想要的最佳方式使用它。