修改列数据类型

时间:2014-09-04 06:29:50

标签: oracle10g

我有两个表,如Samp1(父表)和Samp2(子表)

父表:Samp1

column            Datatype     Constraint
----------------------------------------
Id Number(6)      Primary       Key

子表:Samp2

column              Datatype      Constraint
----------------------------------------------
Id                  Number(6)      Foriegn Key

那么如何一次修改列数据类型Number to Varchar2(10)父表和子表,可以吗?

1 个答案:

答案 0 :(得分:1)

您无法一步完成此操作。假设表中有数据,您可能需要执行类似

的操作
  • 将新列(例如id_varchar)添加到您的父表
  • 从现有列
  • 中的数据填充此新列中的数据
  • 将新列添加到子表
  • 从现有列
  • 中的数据填充此新列中的数据
  • 为新列
  • 创建新的外键约束
  • 删除现有的外键约束
  • 删除现有的主键约束
  • 从两个表中删除现有的id
  • id_varchar列重命名为每个表格中的id
  • 在父表上创建新的主键约束

通常情况下,这需要一些停机时间,因为您通常不希望会话在您执行此操作时修改数据。如果您需要在线执行此操作,则可能会使用dbms_redefinition包,这将涉及创建两个表的新副本。