我有一张表,其主键是 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;