Oracle10g 修改列数据类型
我有两个表,如Samp1(父表)和Samp2(子表) 父表:Samp1Oracle10g 修改列数据类型,oracle10g,Oracle10g,我有两个表,如Samp1(父表)和Samp2(子表) 父表:Samp1 column Datatype Constraint ---------------------------------------- Id Number(6) Primary Key 子表:Samp2 column Datatype Constraint ----------------------------------------
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先生