自动增量身份问题

时间:2011-02-18 06:02:26

标签: sql sql-server sql-server-2005 tsql

使用SQL Server。

表1

RecordNo   ID
---------------
2          001
3          002
4         003
....

RecordNo列是Table1的标识列

问题

RecordNo列有时从0开始,有时从2开始。如何避免此问题 - RecordNo Column应始终从1开始。它不应该从其他数字开始。

RecordNo   ID
--------------    
1          001
2          002
3          003
....

需要查询帮助

2 个答案:

答案 0 :(得分:3)

无论记录是否最终提交,自动递增的标识号都会递增。它在我看来可能是初始插入失败或者是在未提交的事务中。

标识列类型是一个代理标识符,不建议将该数字用于其他任何内容。可以构建自己的自动增量功能,但由于性能和并发问题,这通常是个坏主意。

此外,reseed the identity column back to 1可以这样:

dbcc checkident (table1, reseed, 1)

编辑:我假设您已正确设置了表格定义,种子设置为1,增量也设置为1。

答案 1 :(得分:1)

您可以在创建表时设置起始值:

Create Table Table1
    (
    RecordNo int not null Identity(1,1)
    , Id char(3) ...
    )

IDENTITY [ (seed ,increment ) ]

如果您需要重新设定指定的表格,请参阅DBCC CHECKIDENT