【问题标题】:SQL Server trigger to update data automaticallySQL Server 触发器自动更新数据
【发布时间】:2012-10-09 01:41:12
【问题描述】:

我正在设计一个图书馆管理数据库架构,假设有一个表“Borrow”


身份证号
用户 ID
book_id
借用日期
到期日
已过期
expired_day(图书过期后的天数)
很好


SQL Trigger 可以实现以下情况吗?
1.将due_date与Today比较,如果相同-->发送邮件-->将isExpired标记为true
2.如果isExpired标记为true-->比较today和due_date的差,
update expired_day--->update fine (expired_days * 5)

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    触发器仅在表或行发生某些事情时触发。它不会连续(或每天)发射。如果表格没有发生任何事情,那么您的触发器将永远不会触发,因此您的检查将无法完成。

    因此,当您第一次将记录插入行时,您描述的触发器会起作用,但是没有自动方法在到期日之后触发触发器以检查是否过期。

    您很可能需要设置一个包含您的代码的存储过程,并找到一种方法来按计划运行它。

    以下链接介绍了如何设置: Scheduled run of stored procedure on SQL server

    【讨论】:

    • 我想再问一个问题,我写了一个可以将数据插入SQL server数据库的程序,机器(不是程序开发的机器)应该先安装SQL server吗?
    【解决方案2】:

    由于您想每天查看图书馆的所有记录并希望它们相应地更新,因此最好制作一个每日作业并安排一个代理并设置特定时间,以便每天自动执行该每日作业.
    请注意:您应该记住选择您认为您的应用程序在一天中使用最少的时间。

    创建代理:http://msdn.microsoft.com/en-us/library/ms181153(v=sql.105).aspx

    【讨论】:

    • 我想再问一个问题,我写了一个可以将数据插入SQL Server数据库的程序,机器(不是程序开发的机器)应该先安装SQL Server吗?
    • 我无法清楚地理解您的问题,但只有服务器机器(您部署代码的地方)需要安装 sql server。
    猜你喜欢
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 2016-11-03
    • 2014-10-23
    相关资源
    最近更新 更多