Каков наилучший способ автоматического обновления данных каждой записи? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть ситуация, когда мне нужно вставить данные заказа транзакции из webAPI в базу данных (SQL Server 2016), которые будут автоматически помечены как истекшие в течение 5 минут.

Что мне приходит в голову:

  1. Создать планировщик (Sql Агент заданий или Windows планировщик), который будет запускать запрос на обновление каждую секунду, чтобы проверить, превышает ли какая-либо запись create_time более 5 минут, а затем обновить expired_status = 1

Но хороший ли это выбор? Поскольку в моем случае в каждую секунду может быть много необработанных данных, что может привести к взаимоблокировке (?).

Или какой-нибудь лучший способ сделать это?

Ответы [ 2 ]

2 голосов
/ 17 апреля 2020

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

1 голос
/ 17 апреля 2020

попробуйте следующее с вычисляемым столбцом:

ALTER TABLE transaction_table
ADD Expired_Status AS CAST(case when datediff(minute, create_time, getdate()) > 5 then 1 else 0 end AS bit)
GO

Пожалуйста, посмотрите пример здесь .

...