表中有 2 个身份

Mil*_*uzi 2 sql-server identity sql-server-2012

我需要在一张表中包含 2 个标识列。一个是正​​常身份,另一个将每年重置。

DBCC CHECKIDENT ('TestTable', RESEED, 0)在插入程序的帮助下完成了重置部分。

但除了这个,我不知道如何拥有一个正常的身份。解决方案可能使用两个表,但我更喜欢将它们都放在一个表中。

小智 6

看起来评论可能已经为你回答了这个问题,但有一个实际的答案:

一个表中不能有两列都具有IDENTITY(n,m)规范。

满足您的要求的最明智的方法可能是:

  • 您正常的始终递增标识列应具有IDENTITY规范
  • 使用SEQUENCE请参阅此处的参考文档和此处的更多一般指导)来控制应每年重置的另一列。

您可以使用

ALTER SEQUENCE <sequence_name> RESTART WITH <new_start_value>;
Run Code Online (Sandbox Code Playgroud)

此命令可以通过多种方式发出,例如从计划在您期望的重置日期每年运行的作业中发出。