SQL Server中的自动增量列并不总是从1开始?

时间:2012-04-10 07:50:30

标签: sql-server sql-server-2005 auto-increment

我正在使用SqlServer 2005,我有一个表格,其中我有一个自动递增列但由于某种原因,自动增量字段不以1开头,而是有一些随机数,如21,91。为什么会这样?

2 个答案:

答案 0 :(得分:1)

您需要为列设置Seed ....或者如果您之前已输入行,则需要在表格上执行TRUNCATE TABLE命令...

TRUNCATE TABLE XYZ

答案 1 :(得分: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会产生错误,自动增量ID是唯一的!