列无数据直接修改
alter table table_name modify column_name datatype;
列有数据
新增一列
把要改变的列的值转移过去并清空原列的值
改变列的数据类型
把值转移回来,并删除新增的列
网上看到的是
alter table table_name add column_name_temp datatype;
alter table table_name modify table_name null;
update table_name set column_name_temp=column_name,column_name=null;
alter table table_name modify column_name datatype;
update table_name set column_name=column_name_temp,column_name_temp=null;
alter table table_name drop column column_name_temp;
alter table table_name modify table_name not null;
其中有两行
alter table table_name modify table_name null;
alter table table_name modify table_name not null;
不知道啥意思,貌似是把类型变为null,我执行出现ORA-01451: column to be modified to NULL cannot be modified to NULL的错误。我去掉了就可以执行了貌似达到了目的。
alter table table_name add column_name_temp datatype;
update table_name set column_name_temp=column_name,column_name=null;
alter table table_name modify column_name datatype;
update table_name set column_name=column_name_temp,column_name_temp=null;
alter table table_name drop column column_name_temp;