重新编号主键

Aar*_*her 8 sql primary-key

如何重置sql表上的主键计数器并使用新的主键更新每一行?

Gal*_*ian 14

我会首先在表中添加另一列,用新的PK填充它.

然后我将使用update语句来更新所有相关表中的新fk字段.

然后你可以删除旧的PK和旧的fk字段.

编辑:是的,正如伊恩所说,你将不得不放弃然后重新创建所有外键约束.


Zac*_*tes 6

不确定您正在使用哪个DBMS但是它恰好是SQL Server:

SET IDENTITY_INSERT [MyTable] ON
Run Code Online (Sandbox Code Playgroud)

允许您更新/插入主键列.然后当你完成更新键时(如果逻辑很复杂,可以使用CURSOR)

SET IDENTITY_INSERT [MyTable] OFF
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!