1

现在有一列名为 Line_no ( smallint)。我想更改此列的数据类型是bigint ,但此列是主键,并且有这么多表上有外键引用,那么如何更改呢?我需要同时Sql server更改oracle数据库

4

2 回答 2

1

首先,目前没有简单的方法可以做到这一点。特别是在Oracle中,为了改变数据类型,字段的所有值都应该为空。无论如何,以下过程适用于 Oracle 和 SQL Server:

  1. 使您的数据库脱机,以免任何操作干扰我们的流程。
  2. 添加一个新字段,例如 line_num 具有您的新数据类型。
  3. 使用所有记录的 line_no 值更新新字段。
  4. 编写一个存储过程以使用元数据删除所有引用当前 PK 的 FK,并且此 SP 应在循环时将 add FK 命令写入 dbms 输出,以便稍后您可以执行它们以在步骤 9 中再次添加这些 FK
  5. 将主键从 line_no 字段中删除。
  6. 删除字段 line_no。
  7. 将字段 line_num 重命名为 line_no。
  8. 在新字段上添加主键。
  9. 运行步骤 4 中生成的命令以再次添加所有 FK。
  10. 使您的数据库在线:)
于 2013-01-28T06:01:35.277 回答
0

这取决于您的 DBMS。您可能必须删除外键约束、更改列并重新创建约束。

于 2013-01-28T02:16:53.970 回答