Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 生成每年重置的序列号_Sql_Sql Server_Asp.net Mvc_Tsql - Fatal编程技术网

Sql 生成每年重置的序列号

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

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