身份列

时间:2011-01-26 12:38:23

标签: sql-server-2005

我有一个标识列,它有多个删除现在它无法正常工作,因为它达到了INT数据类型的最大限制, 如何在不删除所有数据的情况下在已删除的记录位置插入记录?

3 个答案:

答案 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。