【问题标题】:Trigger deleting data periodically触发定期删除数据
【发布时间】:2017-04-19 09:23:13
【问题描述】:

我想让触发器在给定时间(例如每天上午 10 点)到来时删除给定表中的某些行。我该如何实现?

【问题讨论】:

    标签: sql sql-server triggers


    【解决方案1】:

    完整的 SQL Server

    您可以在存储过程中设置代码,而不是触发器,并定义一个计划作业以在每天上午 10 点调用该 sp。

    你创造了工作:

    https://docs.microsoft.com/en-us/sql/ssms/agent/create-a-job

    它的命令必须是对您的清洁服务提供商的调用,例如:

    exec (your stored proc name) (and possibly add parameters)
    

    你安排它每天调用一次:

    https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job

    SQL Server Express

    由于您拥有 SQL Server Express 并且无法使用 SQL Server 代理,因此您可以改为使用 Windows 本身的任务计划程序每天调用一次您的清理代码。

    使用您的删除命令创建一个脚本文件 cleaning.sql,并创建一个批处理文件 cleaning.bat 来执行它。批处理文件示例:

    sqlcmd -i cleaning.sql
    

    将这两个文件放在同一个文件夹中,并将任务计划程序设置为每天上午 10 点执行该批处理。

    【讨论】:

    • 不幸的是,我不能使用作业和计划,因为我的 sql server 没有 sql server 代理(它是 express verison)。那么如何处理任务呢?
    • 我将编辑我的答案以涵盖 SQL Server Express,请在几分钟后检查。
    • 好的,谢谢,那个选项应该没问题。无论如何,如果有办法指定执行相同操作的触发器,我也很感兴趣。你知道这是否可能吗?
    • 不,抱歉,据我所知,您无法使用触发器实现这一目标。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 2021-07-25
    相关资源
    最近更新 更多