如果表的主键没有正确递增,如何重新排序或自动递增表的主键?

时间:2016-03-28 18:21:03

标签: sql sql-server sql-server-2008-r2

我继承了一个SQL Server数据库,由于某种原因,主键没有正确递增。

例如,表格中最后一条记录的PK是120350

然后,当我在表格中输入新记录时,它会得到PK 48377

为新记录重新排序或设置初始PK的最佳方法是什么?这适用于Microsoft SQL Server 2008 R2。

2 个答案:

答案 0 :(得分:0)

SET IDENTITY_INSERT '<tablename>' ON

这会将标识列重新设置到它应该的位置(在本例中为120351)。如果要重新排序现有值,则需要使用IDENTITY作为脚本的一部分来移动行。你如何做到这一点取决于你究竟想要完成什么。请记住,您还需要保持所有外键同步。

如果您对定义的列有一些其他要求,“正确递增”,那么您可能需要{{1}}列之外的其他内容。

答案 1 :(得分:0)

当我使用

DBCC CHECKIDENT('UPS_Worldship_Export');

我得到了这样的结果:检查身份信息:当前身份值&#39; 48377&#39;,当前列值&#39; 120351&#39;。

不知何故,价值偏离了轨道。感谢上面的评论,我只是将值重新设置为最高值,现在它可以正常工作。

DBCC CHECKIDENT (',<table name>', RESEED, <current column value>);