我是SQL Server的新手,但我正在开发一个应用程序,其中一个记录被添加到表中,并被赋予DateTime
戳记。
我希望能够在添加行后1小时动态更新此行的Status
列。
如果没有每隔几分钟运行一些服务器端脚本或存储过程,这是否可行?有没有一种有效的方法来实现这一目标?
答案 0 :(得分:3)
在Sql Server中,您可以执行Time Dependant
或Action 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