首页 > 解决方案 > 生成每年重置的序列号

问题描述

我想用一些每年重置的序列号更新插入的记录(来自 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()) 

您知道如何改进上面显示的解决方案吗?或者还有其他更好的解决方案吗?

标签: sqlsql-serverasp.net-mvctsql

解决方案


推荐阅读