我有一个标识列,它有多个删除现在它无法正常工作,因为它达到了INT数据类型的最大限制, 如何在不删除所有数据的情况下在已删除的记录位置插入记录?
答案 0 :(得分:5)
您无法“回收”未使用的IDENTITY
值 - 如果您已达到INT
数据范围的末尾,则需要将ID
列更改为BIGINT
ALTER TABLE dbo.YourTable
ALTER COLUMN YourIDColumn BIGINT
IDENTITY
属性将被保留 - 现在您可以在接下来的几个月/几年内获得许多额外的ID值!
答案 1 :(得分:4)
原谅显而易见......
你从1开始,增加1吗?如果是,请将标识更改为-1,-1。它需要一个表重建,但它比更改为bigint更容易。并为您提供另外20亿个ID。
然后计划你的bigint迁移......
答案 2 :(得分:3)
这似乎很多工作;为什么不将表(以及任何相关表)上的主键从int
更改为bigint
?
int
将为您提供最大值2,147,483,647。
bigint
将为您提供最大值9,223,372,036,854,775,807。