Oracle10g 修改列数据类型

Oracle10g 修改列数据类型,oracle10g,Oracle10g,我有两个表,如Samp1(父表)和Samp2(子表) 父表:Samp1 column Datatype Constraint ---------------------------------------- Id Number(6) Primary Key 子表:Samp2 column Datatype Constraint ----------------------------------------

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

父表:Samp1

column            Datatype     Constraint
----------------------------------------
Id Number(6)      Primary       Key
子表:Samp2

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

那么,如何将列数据类型编号同时修改为Varchar2(10)父表和子表,可以吗?

您不能一步完成这项工作。假设表中有数据,您可能需要执行以下操作

  • 向父表中添加新列(例如
    id\u varchar
  • 从现有列中的数据填充此新列中的数据
  • 将该新列添加到子表中
  • 从现有列中的数据填充此新列中的数据
  • 为新列创建新的外键约束
  • 删除现有外键约束
  • 删除现有的主键约束
  • 从两个表中删除现有的
    id
  • 将每个表中的
    id\u varchar
    列重命名为
    id
  • 在父表上创建新的主键约束

通常,这需要一些停机时间,因为您通常不希望会话在执行此操作时修改数据。如果您需要在线执行此操作,您可以使用
dbms\u重新定义
包,该包将涉及创建两个表的新副本。

感谢您的回复,Justin Cave先生