Sql更改数据类型

时间:2013-01-28 02:14:12

标签: sql oracle foreign-keys

现在有一列名为Line_no(smallint)。我想更改此列数据类型为bigint,但此列是主键,并且有这么多表有外键引用,所以如何更改它?,我需要更改{{1} }和Sql server数据库

2 个答案:

答案 0 :(得分:1)

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

  1. 让你的数据库离线,这样任何操作都不会打扰我们的 处理。
  2. 添加一个新字段,例如line_num,其中包含您的新数据类型。
  3. 使用所有记录的line_no值更新新字段。
  4. 编写存储过程以删除所有引用当前的FK PK,使用元数据和此SP应该写入添加FK命令 dbms输出,当它循环时,以便稍后您可以执行它们 在步骤9中再次添加这些FK
  5. 将主键从line_no字段中删除。
  6. 删除字段line_no。
  7. 重命名该字段 line_num到line_no。
  8. 在新字段上添加主键。
  9. 运行步骤4中生成的命令,再次添加所有FK。
  10. 让您的数据库在线:)

答案 1 :(得分:0)

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