Sql 生成每年重置的序列号
我想用每年重置的序列号更新插入的记录(来自weab应用程序)。其形式应为2019年1月、2019年2月、2020年1月等 我制定的第一个解决方案是在插入操作时使用触发器Sql 生成每年重置的序列号,sql,sql-server,asp.net-mvc,tsql,Sql,Sql Server,Asp.net Mvc,Tsql,我想用每年重置的序列号更新插入的记录(来自weab应用程序)。其形式应为2019年1月、2019年2月、2020年1月等 我制定的第一个解决方案是在插入操作时使用触发器 CREATE TRIGGER GenerateActivityNumber ON dbo.Activity AFTER INSERT AS BEGIN update Activity set Activity.ActivityNumber = CONCAT(NEXT VALUE FOR Activi
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
看起来不错,但除了使用每年运行的作业外,我看不到任何重置序列的方法。
第二个想法非常简单,但不太安全(重复的风险)-计算当年的记录并增加值(仍在触发器内)
您是否知道如何改进上述解决方案?或者还有其他更好的解决方案吗?你能安排一项工作在新年时重置序列吗?@莲花我宁愿避免这种情况。你真的需要每年从1开始吗?你真的需要这一年成为身份证的一部分吗?难道它不能只是一个没有任何意义的自动增值吗?您可以将创建日期保留在另一列中。@EzLo是的,它必须每年从1开始。@drv请查看这篇文章
select MAX(id)+1 from activity where YEAR(CreatedDate) = YEAR(GETDATE())