Как постоянно обновлять таблицу базы данных в зависимости от времени?

У меня есть сотни записей, все с столбцом datetime expiry. Что-то вроде этого:

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 для запуска сценария обновления каждую секунду
  2. Сделайте это с помощью сервера приложений (ColdFusion 2016) на каждом запросе страницы. Поэтому каждый раз, когда запрашивается страница, он запускает этот сценарий обновления в onRequestStart() .

Оба кажутся немного «Web 1.0» и, возможно, очень дорогостоящими. Наверное, я пытаюсь сделать то, что делает Facebook, когда публикует запланированные посты, как только приходит правильное время, но не может это сделать эффективно.

Может ли кто-нибудь подумать, что было бы хорошим способом добиться этого?

Я бы либо использовал вид вдоль линий

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

или используйте вычисляемый столбец для столбца состояния, который делает то же самое. В любом случае, если он истек, он будет отображаться как «Мертвый», а если нет, то он схватит столбец статуса.

  • Применение логики WHILE при обработке строк по строкам с помощью курсора
  • SQL Server: как заполнять разреженные данные остальными нулевыми значениями?
  • TSQL Возможно несколько столбцов с именами строк?
  • Уникальное ограничение даты и времени SQL Server
  • Можно ли объединить строку в значение последовательности и использовать ее как значение по умолчанию для столбца?
  • IsNumeric с ошибкой: «В текущей команде произошла серьезная ошибка». SQL Server 2014 CTE
  • Выберите новый столбец на основе существующего значения
  • SQL Query для определения периодов из таблицы истории
  • Идентифицировать объекты, требующие разбиения на разделы
  • Установите флаг в исходной таблице, когда запись вставлена ​​в целевую таблицу
  • Суммируйте один столбец и вычтите второй столбец
  • Давайте будем гением компьютера.