Как постоянно обновлять таблицу базы данных в зависимости от времени?
У меня есть сотни записей, все с столбцом 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
по истечении истечения срока годности.
До сих пор я думал об этих возможных решениях:
- Объединить OUTPUT insert.id со значением из выбранной строки
- Как увидеть дату создания агента и дату создания агента в SQL Server 2014?
- Получите время между двумя часами ночи до утра
- Почему не сравниваются даты sql?
- Как обновить TOP (n) с помощью ORDER BY, давая предсказуемый результат?
- Настройте задание SQL Server для запуска сценария обновления каждую секунду
- Сделайте это с помощью сервера приложений (ColdFusion 2016) на каждом запросе страницы. Поэтому каждый раз, когда запрашивается страница, он запускает этот сценарий обновления в
onRequestStart()
.
Оба кажутся немного «Web 1.0» и, возможно, очень дорогостоящими. Наверное, я пытаюсь сделать то, что делает Facebook, когда публикует запланированные посты, как только приходит правильное время, но не может это сделать эффективно.
Может ли кто-нибудь подумать, что было бы хорошим способом добиться этого?
- Счетчик приращения T-SQL, основанный на изменении значения столбца
- Выбор строк при изменении значения столбца из предыдущей строки
- SQL Server 2014: Использование gMSA для учетной записи прокси-сервера xp_cmdshell?
- sql-сервер «мостовые» данные
- Ошибка = Внимание: импорт BCP с файлом формата преобразует пустые строки в столбцах с разделителями в NULL
- Команда SQL для присвоения среднего значения
- Ошибка восстановления базы данных SQL Server 2008 R2 с включенным TDE для SQL Server 2014
- Значение по умолчанию для SQL Server для столбцов
Я бы либо использовал вид вдоль линий
SELECT [Name] ,[Expires] ,CASE WHEN GETUTCDATE() > [Expires] THEN 'Dead' ELSE [Status] END AS [view_Status] FROM Table
или используйте вычисляемый столбец для столбца состояния, который делает то же самое. В любом случае, если он истек, он будет отображаться как «Мертвый», а если нет, то он схватит столбец статуса.