触发器如何在5天后自动触发?

时间:2012-11-20 17:17:36

标签: sql sql-server triggers

我有一个Shoppping List表,其中包含以下列:

shopID, Product, DateTimeShopped, PaiedOrNot, ListStatus

我的要求是将当前日期时间与DateTimeShopped进行比较,如果购物清单在5天后仍未付款,则会自动将ListStatus标记为Blocked

如何在SQL Server的触发器中处理时间问题?

感谢。

2 个答案:

答案 0 :(得分:4)

简短回答。你不能。

答案很长。可以从触发器运行多个简单语句,但是,这不是最适合它的地方。

另一个选项。我将数据插入另一个表并从Sql代理运行存储过程以相应地操作它。

答案 1 :(得分:1)

创建SP ShoppingListSP

declare @current datetime    
set @current = (select GETDATE() )

if ( datediff(@DateTimeShopped,@current ) > 5)
begin
    update [Shopping List] set ListStatus = 'Blocked' where id=123123
end

然后创建一个SQL作业,该作业在后台每小时左右运行一次。

exec ShoppingListSP

您可能还需要使用游标来逐行处理一组数据。