Создать порядковый номер, который сбрасывается каждый год - PullRequest
0 голосов
/ 07 ноября 2019

Я хотел бы обновить вставленную запись (из веб-приложения) с некоторым порядковым номером, который сбрасывается каждый год. Он должен иметь форму 1/2019, 2/2019, 1/2020 и т. Д.

Первое решение, которое я принял, заключалось в использовании триггера при действии вставки.

CREATE TRIGGER  GenerateActivityNumber
   ON  dbo.Activity
   AFTER INSERT
AS 
BEGIN

    update Activity set Activity.ActivityNumber =  CONCAT(NEXT VALUE FOR ActivityCounter, '/', YEAR(GETDATE()))  WHERE Activity.id = (select Id from inserted)
END

Кажется хорошимно я не вижу никакого способа сброса последовательности, кроме использования задания, которое выполняется каждый год. Вторая идея была очень простой, но она не очень безопасна (риск дублирования) - подсчет записей за текущий год и увеличение значения (все еще внутри триггера)

select MAX(id)+1 from activity where  YEAR(CreatedDate) =  YEAR(GETDATE()) 

Есть ли у вас идеи, как улучшить решения, показанные выше? Или есть другие лучшие решения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...