2012-04-10 72 views
-2

我正在使用SqlServer 2005,我有一个表,其中我有一个自动递增列,但由于某些原因,自动递增字段不以1开头,但有一些随机数,如21,91。为什么会发生?SQL Server中的自动增量列并不总是从1开始?

+1

显示你的表格定义,不要把所有东西都大写。 – 2012-04-10 07:53:44

+0

你为什么喊?您可能[请查看关于dbcc checkident的文档](http://msdn.microsoft.com/zh-cn/library/ms176057%28v=sql.105%29.aspx) – 2012-04-10 07:55:10

回答

1

你要么需要设置Seed的列....或者您是否已进入行,您需要在表上执行一个TRUNCATE TABLE命令

TRUNCATE TABLE XYZ 
1

MSSQL未使用max(id)+ 1作为其他数据库的身份。它存储最后使用的ID并递增它。

可以补种的身份:

DBCC CHECKIDENT ('tablex', RESEED, 1) 

或截断表,这也删除所有数据:

TRUNCATE TABLE tablex 

当然你也可以联合身份补种用的最后一个值:

DBCC CHECKIDENT ('tablex', RESEED, (SELECT max(id) + 1 FROM tablex)) 

但是,请注意由于冲突导致重新生成id时产生错误,aut o增量ID是唯一的!