我继承了一个SQL Server数据库,由于某种原因,主键没有正确递增。
例如,表格中最后一条记录的PK是120350
然后,当我在表格中输入新记录时,它会得到PK 48377
为新记录重新排序或设置初始PK的最佳方法是什么?这适用于Microsoft SQL Server 2008 R2。
答案 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>);