在“X”时间后动态更新“状态”列

时间:2014-08-06 17:13:30

标签: sql sql-server database web-services stored-procedures

我是SQL Server的新手,但我正在开发一个应用程序,其中一个记录被添加到表中,并被赋予DateTime戳记。

我希望能够在添加行后1小时动态更新此行的Status列。

如果没有每隔几分钟运行一些服务器端脚本或存储过程,这是否可行?有没有一种有效的方法来实现这一目标?

1 个答案:

答案 0 :(得分:3)

在Sql Server中,您可以执行Time DependantAction Dependent代码。

时间依赖

时间相关代码执行通过SQL Server代理作业处理。您可以在一天的特定时间执行存储过程或临时T-SQL代码。它可以安排定期执行。

行动依赖

动作相关代码执行通过触发器(后/代替触发器)处理。为响应DML操作INSERT,UPDATE或DELETE而执行的一段代码。

解决方案

在您的情况下,您尝试在一段时间后执行代码以响应操作(插入)。我不认为有一种有效的方法,我宁愿做以下事情....

您的表格中可以有一个名为Created of Datetime数据类型的列,并设置default value GETDATE()

现在你不需要状态栏。您只需要一个查询/视图,它将在运行时检查是否超过一小时前添加了行,并根据需要将其返回STATUS。

像......这样的东西。

CREATE VIEW dbo.vw_Current_Status 
AS
SELECT * 
     , CASE WHEN  DATEDIFF(MINUTE, Created, GETDATE()) >= 60
             THEN 'OLD'
           ELSE 'New' END AS [Status]
FROM TABLE_NAME