在不使用身份规范的情况下自动化顺序整数 ID?

Automate sequential integer IDs without using Identity Specification?

是否有任何 tried/true 方法可以使用 SQL 服务器的内置身份规范来管理您自己的顺序整数字段 w/o?我认为这必须重复多次,而我的 google 技能今晚让我失望了。

我的第一个想法是使用单独的 table 来管理 ID,并在目标 table 上使用触发器来管理设置 ID。并发问题显然很重要,但插入性能在这种情况下并不重要。

这里有一些我知道需要注意的陷阱:

最后一个要点的原因(也是我首先要在没有身份规范字段的情况下执行此操作的全部原因)是因为我想在不同的起点播种多个环境并且我希望能够在它们之间复制数据,以便给定记录的 ID 在环境之间保持相同(我必须使用整数;我不能使用 GUID)。

(是的,我可以设置身份插入 on/off 来复制数据并仍然使用常规的身份规范字段,但每次插入后它都会重新播种。我 可以 然后用DBCC CHECKIDENT把它reseed回原来的位置,但是我觉得这个解决方案的风险太大了。有人犯错只需要一次,然后当我们意识到它时,那将是一个真正的痛苦修复数据……可能已经够痛苦了,一开始就做我现在正在做的事情会更有意义。

SQL Server 2012 引入了 SEQUENCE 数据库对象的概念 - 类似于 "identity" 列,但与 table 分开。

您可以从您的代码中创建和使用序列,您可以在不同的地方使用这些值,等等。

有关详细信息,请参阅以下链接: