我想用一些每年重置的序列号更新插入的记录(来自 web 应用程序)。它的格式应为 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())
您知道如何改进上面显示的解决方案吗?或者还有其他更好的解决方案吗?