如何根据时间不断更新数据库表?

时间:2017-05-02 19:15:44

标签: sql sql-server coldfusion sql-server-2014 coldfusion-11

我有数百条记录,都有一个到期日期时间列。像这样:

Name         Expires               Status
-----------+---------------------+--------+
Apple1       2017-05-05 10:10:15    Live
Apple2       2017-06-01 18:15:03    Live
Apple3       2017-01-01 23:59:59    Dead
Apple4       2017-01-30 23:00:01    Draft
Apple5       2017-01-30 23:00:01    Queued

我希望在到期日期时间结束后更改Live的任何记录的状态。

到目前为止,我已经考虑过这些可能的解决方案:

  1. 设置SQL Server作业以每秒运行一些更新脚本<​​/ li>
  2. 在每个页面请求上使用应用程序服务器(ColdFusion 2016)执行此操作。因此,每次请求页面时,它都将在应用程序的onRequestStart()方法中运行此更新脚本。
  3. 两者似乎都有点“Web 1.0”,而且可能非常昂贵。我想我正在努力做Facebook在正确的时间到来时立即发布预定的帖子所做的事情但是无法有效地做到这一点。

    有人可以建议一下实现这个目标的好方法吗?

1 个答案:

答案 0 :(得分:4)

我会使用

的视图
SELECT
    [Name]
    ,[Expires]
    ,CASE
        WHEN GETUTCDATE() > [Expires] THEN 'Dead'
        ELSE [Status]
        END AS [view_Status]
FROM Table

或使用计算列作为执行相同操作的状态列。无论哪种方式,如果它已经过期,它将列为“死”,如果没有,则它将获取状态列。