oracle修改字段类型时报"要更改的列必须为空"处理方法

来源:互联网 发布:拳皇13pc版 出招优化 编辑:程序博客网 时间:2024/05/18 03:51
执行以下语句报"要修改数据类型,则要更改的列必须为空"
      alter table 表名 modify (目标字段 varchar2(100));

解决步骤:

第一步,在表中加一个临时字段
      alter table 表名 add 临时字段 目标字段原来的类型;

第二步,将目标字段的值付给临时字段,并将目标字段置空
      update 表名 set 临时字段=目标字段,目标字段=null;

第三步,修改目标类型
      alter table 表名  modify 目标字段 varchar2(100);

第四步,将临时字段的值付给目标字段,并将临时字段置空
      update 表名 set 目标字段=临时字段,临时字段=null;

最后一步,删除临时字段
      alter table 表名 drop column 临时字段;


举例如:

1.alter table  t_con_contractChangeBill add fTempContent varchar(2000)


2.update t_con_contractChangeBill set fTempContent =FExecuteContent


3.update t_con_contractChangeBill set FExecuteContent =null


4.alter table  t_con_contractChangeBill alter column FExecuteContent varchar(2000)


5.update t_con_contractChangeBill set FExecuteContent  = fTempContent


6.alter table  t_con_contractChangeBill drop column fTempContent


1 0