我有一个表,其中有一列名为id
这是类型Identity
。但此列包含重复值 1..8,然后又包含重复值 1..10
这怎么可能呢?
我测试了 Giogri 所说的内容,如果在表有行后启用身份规范(至少在 2008 年,也可能是其他版本),数据库将从最高整数值开始编号。如果您有一行的列值为 100,则启用 Identity,下一次插入将为 101。即使将 Identity Seed 指定为 1。这不是我所期望的,但确实发生了。
此外SET IDENTITY INSERT
,还有一个重新播种命令。DBCC CHECKIDENT
命令会将您的身份值重置回您指定的值。
鉴于启用身份规范实际上从列中的最高整数开始,有人可能使用SET IDENTITY_INSERT
或者做了一个DBCC CHECKIDENT
.
正如安多马尔所说,重新排序的最快方法是像这样删除/重新创建列
ALTER TABLE tbl
DROP COLUMN ident_column
GO
alter TABLE tbl
ADD ident_column int IDENTITY
SET IDENTITY_INSERT
docs: http://msdn.microsoft.com/en-us/library/aa259221(SQL.80).aspx http://msdn.microsoft.com/en-us/library/aa259221(SQL.80).aspx
DBCC CHECKIDENT
docs: http://msdn.microsoft.com/en-us/library/aa258817(SQL.80).aspx http://msdn.microsoft.com/en-us/library/aa258817(SQL.80).aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)