起始种子是否与sql server identity列有关

时间:2017-02-15 20:23:39

标签: sql-server tsql database-design primary-key

在SQL Server中为标识列设置种子值时是否有任何技术注意事项?

此列将是PK并标记为身份自动增量。

企业不希望在1处启动ID,因为它们将在查询字符串中公开显示并显示在多个页面上。使用更高的随机数使它看起来更好,这对我来说都是有意义的,我想确保我没有遗漏任何技术考虑。

这是我要做的事情的一个例子

--Reset manufacturer id to a Random 5 digit number
DECLARE @newId INT = (SELECT FLOOR(RAND() * 100000) + 10000  % 10000) 
DBCC CHECKIDENT (Manufacturer, RESEED, @newId );

2 个答案:

答案 0 :(得分:0)

从未来的某个随机数开始,我没有看到任何问题。

答案 1 :(得分:0)

总结一些评论到答案。

起始标识值需要考虑表中已有的任何值。由于ID会自动递增,因此如果ID过低,ID可能会与现有值发生冲突。

Ids序列中可能会出现较大的间隙。不太可能,高起始种子和许多间隙可能导致色谱柱的INT范围耗尽。然后app开始繁荣!

列上的任何索引都不应该关心它是从1还是99999开始。