我正在教授Microsoft SQL Server课程,一个学生问是否有实际的原因,为什么我们会将自动增量设置为1,1以外的其他值(种子从1开始,以1为增量)。有实际的原因为什么我们将种子设置为更高的值或以非1的值递增?只要该值是唯一的就不重要吗?
如果没有实际原因,为什么我们可以选择在Microsoft SQL Server中为“身份”设置这些值?
答案 0 :(得分:2)
如果您使用有符号整数并从1开始,则只使用了可用范围的一半。默认值实际上应该至少从数据类型开始,例如对于32位int为-20亿。
在某些情况下,您可能希望合并来自多个表的数据。在这种情况下,每个表应保留一个单独的ID范围。您可以使每个表以不同的数字开头以防止重叠。例如,从1开始,再从10亿开始。或者,您可以对一个(1,2)使用奇数,对另一个(2,2)使用偶数。
答案 1 :(得分:2)
具有许多可配置的起始值的实际原因:
Missing
,Unknown
和Not Applicable
记录可能应该具有预定义ID。新行的ID应超出预定义数字范围。 TRUNCATE TABLE
重置IDENTITY值。为避免生成重复的ID,您需要使用DBCC CHECKIDENT重新设置表的种子并将当前值设置为1以外的其他值。当然还有很多其他原因。