【问题标题】:Automatic update of values in SQL ServerSQL Server 中值的自动更新
【发布时间】:2016-03-30 08:49:12
【问题描述】:

例如,我有一个带有列的表 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

【问题讨论】:

标签: sql-server auto-update


【解决方案1】:

这取决于您所说的“开箱即用的解决方案”是什么意思。您可以创建一个 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
 );

【讨论】:

  • 有很多关于创建 sql server 代理作业的好教程。我认为这远远超出了堆栈溢出答案的范围。
  • 这里是微软docs on creating a job。还有许多包含示例的博客文章。快速google 应该会返回一些。
猜你喜欢
  • 1970-01-01
  • 2021-03-06
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多