SQL Server自动更新数值

3
例如,我有一个表tb,其中包含以下列:
order_id | date_ordered | due_date | status

有没有现成的解决方案,可以在当前时间(从服务器获取)达到 due_date 列的值时自动更新 status 列?我该怎么做呢?

先感谢您。

更新:

类似这样:

test1 | 2016-03-30 09:19:06.610 | 2016-03-30 11:19:06.610 | NEW
test2 | 2016-03-30 09:22:43.513 | 2016-03-30 11:22:43.513 | NEW
test3 | 2016-03-30 09:06:03.627 | 2016-03-30 11:06:03.627 | NEW

当服务器时间到达2016-03-30 11:19:06.610时,test1的状态将会改变,变成overdue


2
使用 SQL Server 作业,https://msdn.microsoft.com/zh-cn/library/ms190268.aspx - Abdul Rasheed
https://dev59.com/blXTa4cB1Zd3GeqP6ffd - sagi
1个回答

2

这取决于您对“开箱即用解决方案”的理解。您可以创建一个SQL Server代理作业,每分钟检查值due_date是否小于或等于当前日期和时间,并更改状态列。

计算列可能是另一种简单得多的解决方案。

像这样的表可能已经足够:

CREATE TABLE tb_test (
    order_id INT PRIMARY KEY,
    date_ordered  DATETIME,
    due_date DATETIME,
    [status] as 
    CASE WHEN due_date <= GETDATE() THEN 'overdue'
    ELSE 'new' END
 );

1
有许多关于创建 SQL Server 代理作业的好教程。我认为这已经超出了 Stack Overflow 回答的范围。 - Mithrandir
这里是微软有关创建作业的文档。还有许多包含示例的博客文章。快速搜索一下谷歌应该就能找到几篇。 - David Rushton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接