更改下一个自动编号分配而不重新创建整个表,MS SQL Server 2000

更改下一个自动编号分配而不重新创建整个表,MS SQL Server 2000

我有一张表,其主键是 int,自动编号自动递增。您的标准主键类型字段。

由于之前复制的数据库的情况比较复杂,现在我的表中已经有行,值高达 410000,但 IDENT_CURRENT 报告的值只有 400060 左右。现在,我得到的代码试图插入记录并崩溃,因为数据库认为它应该使用编号 400060,但我已经有了一条具有该 ID 的记录。爆炸。

我已经研究过在表设计器中手动设置下一个数字,但是在查看它生成的脚本时,它将创建一个重复表,将所有记录复制到其中,删除旧表,重命名它,做一些带有约束的事情等。当我只需要一个简单的改变时,这一切都非常可怕。

是否有一种反向方法来改变这个值而不引起那么多不必要的改变?

答案1

在您的桌子上使用以下内容

dbcc checkident ('dbo.table',重新种子,410000)

它将当前标识值更改为 410000,因此下一个插入值将是增量加上 410000(如果增量为 1,则为 410001)。

答案2

那么像下面这样的操作呢?只删除有问题的记录,然后从临时表中重新插入它们?

SELECT * INTO #temptable FROM tablename WHERE ID_FLD>400059;

DELETE * FROM tablename WHERE ID_FLD>400059;

SELECT * INTO tablename FROM #temptable; 

相关内容