【问题标题】:Updating Identity column from INT to BigInt将标识列从 INT 更新为 BigInt
【发布时间】:2014-10-31 13:44:29
【问题描述】:

我有一个表,它有一个 Identity 字段并且是 INT 数据类型。该列中的最大值为 2,143,352,421,因此夜间作业正在崩溃。

我需要将其更改为 BigInt。但是,此特定列是主键,具有关联的外键。它还具有关联的索引。

我将此数据类型转换为 BigInt 的过程是:

  • 取消关联主键。

  • Alter Table, Alter Column 将数据类型更改为 BigInt。

  • 重新关联主键关系

如何撤消主键,从而维护表中的记录?

这是否像删除主键,将列类型更改为 bigint,然后重新建立 PK 一样简单?

谢谢。

【问题讨论】:

  • 如果你尝试删除主键约束你会得到一个错误,你将不得不在 PK 之前删除外键约束

标签: sql-server


【解决方案1】:

当我的公司在几个月前经历了完全相同的事情时,这让我咯咯笑了起来。这就是我们所做的:

  • 删除所有引用 PK 的 FK
  • 将这些 FK 列更改为 bigint(上线后的惨痛教训)
  • 删除 PK 索引
  • 将 PK 列更改为 bigint
  • 重新创建 PK
  • 重新创建 FK

【讨论】:

  • 如果可能,在您执行此操作时将数据库置于单用户模式。
  • 如果这在任何意义上都是一个重要的数据库,请确保您首先在暂存平台上计时 - 这可能需要几个小时在一个重要的数据库上,并且您不想用完您的维护时间表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-16
  • 2016-02-03
  • 2013-09-24
  • 2021-03-04
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
相关资源
最近更新 更多