我正在设计一个库管理数据库模式,假设有一个表“借用”
id
user_id
book_id
borrow_date
due_date
isExpired
expired_day(书籍过期后的天数)
罚款
SQL Trigger可以实现以下情况吗?
1.将due_date与Today比较,如果相同 - > gt;发送电子邮件 - >标记isExpired为true
2.如果将Expired标记为true - >比较今天和due_date之间的差异,并更新expired_day ---> update fine(expired_days * 5)
答案 0 :(得分:2)
触发器仅在表或行上发生某些事件时触发。它不会连续(或每天)发射。如果表中没有任何反应,那么你的触发器将永远不会触发,因此无法完成检查。
因此,当您第一次将记录插入行时,您描述的触发器将起作用,但是在截止日期之后没有自动触发器触发它以检查到期和罚款。
您很可能需要设置包含代码的存储过程,并找到按计划运行的方法。
以下链接介绍了如何进行设置: Scheduled run of stored procedure on SQL server
答案 1 :(得分:0)
由于您希望每天检查库的所有记录并希望它们相应地更新,因此最好每天完成一项工作并安排代理并设置特定时间,以便每天自动执行此日常工作。
请注意:当您觉得您的申请在一整天中使用最少时,您应该记住选择那个时间。
创建代理:http://msdn.microsoft.com/en-us/library/ms181153(v=sql.105).aspx