首页 > 解决方案 > 在不使用身份规范的情况下自动化顺序整数 ID?

问题描述

是否有任何尝试/真正的方法来管理您自己的顺序整数字段,而无需使用 SQL Server 的内置身份规范?我认为这必须重复多次,而我的谷歌技能今晚让我失望了。

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

这里有一些我知道我需要注意的问题:

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

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

标签: concurrencysql-server-2012auto-incrementdatabase-trigger

解决方案


SQL Server 2012 引入了SEQUENCE数据库对象的概念——类似于“身份”列,但与表分开。

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

有关更多信息,请参阅这些链接:


推荐阅读