是否有使用SQL Server的内置身份规范管理无序管理自己的连续整数字段的尝试/正确方法?我认为这已经完成了很多遍了,而我的Google技能今晚让我失望了。
我的第一个想法是使用单独的表来管理ID,并使用目标表上的触发器来管理ID的设置。并发问题显然很重要,但是在这种情况下,插入性能并不重要。
这是我需要注意的一些陷阱:
最后一个要点的原因(以及我想首先在没有“身份规范”字段的情况下执行此操作的全部原因)是因为我想在不同的起点播种多个环境,并且希望能够复制它们每个之间的数据,以便给定记录的ID在环境之间保持相同(并且我必须使用整数;我不能使用GUID)。
(也是,我可以将身份插入设置为开/关以复制数据,并且仍然使用常规的身份规范字段,但是每次插入后它都会重新设置种子。我可以然后使用DBCC CHECKIDENT重新设置种子它回到了原来的位置,但是我觉得这种解决方案的风险太大了,只需要花费一个人犯错的时间,然后当我们意识到这一点时,修复数据就会非常痛苦。也许足够痛苦,以至于仅仅要做我现在正在做的事情就更有意义了。
答案 0 :(得分:1)
SQL Server 2012引入了SEQUENCE
数据库对象的概念-类似于“身份”列,但与表分开。
您可以从代码中创建和使用序列,可以在各个位置使用值,甚至更多。
有关更多信息,请参见以下链接: