–1-- 变动原来列位置
alter table t rename column old_name to temp_name
alter table t add (old_name varchar2(50));
update t set old_name =temp_name;
alter table t drop temp_name;
—2---不变原来字段位置
alter table t add (temp_name varchar2(50));
update t set temp_name=old_name;
update t set old_name=null;
alter table t modify(old_name varchar2(50));
update t set old_name=temp_name;
alter table t drop temp_name;
alter table pp_outsourcing.outsource add (temp_name number(22,9));
update pp_outsourcing.outsource set temp_name=single_price;
update pp_outsourcing.outsource set single_price=null;
alter table pp_outsourcing.outsource modify(single_price number(22,9));
update pp_outsourcing.outsource set single_price=temp_name;
alter table pp_outsourcing.outsource drop column temp_name;
alter table pp_outsourcing.outsource_report_work add (
actual_outsource_output_tmp number(22,9),
reissue_output_tmp number(22,9),
chargeback_amount_tmp number(22,9)
);
update pp_outsourcing.outsource_report_work set
actual_outsource_output_tmp=actual_outsource_output,
reissue_output_tmp=reissue_output,
chargeback_amount_tmp=chargeback_amount
;
update pp_outsourcing.outsource_report_work set
actual_outsource_output=null,
reissue_output=null,
chargeback_amount=null
;
alter table pp_outsourcing.outsource_report_work modify(
actual_outsource_output number(22,9),
reissue_output number(22,9),
chargeback_amount number(22,9)
);
update pp_outsourcing.outsource_report_work set
actual_outsource_output=actual_outsource_output_tmp,
reissue_output=reissue_output_tmp,
chargeback_amount=chargeback_amount_tmp
;
alter table pp_outsourcing.outsource_report_work drop column (actual_outsource_output_tmp,reissue_output_tmp,chargeback_amount_tmp);
----新增两个临时列
alter table sales.promotional_stock_detail add (
id_tmp varchar2(50),
promotional_stock_id_tmp varchar2(50)
);
-- 将需要修改列数据copy到临时列中
update sales.promotional_stock_detail set
id_tmp=to_char(id),
promotional_stock_id_tmp=to_char(promotional_stock_id);
---查询索引
select constraint_name,column_name from dba_cons_columns where table_name ='PROMOTIONAL_STOCK_DETAIL';
---- 删除主键
alter table sales.promotional_stock_detail drop constraint SYS_C0028944;
---- 删除 not null 索引
alter table sales.promotional_stock_detail drop constraint SYS_C0028943;
---将需要修改列 置null
update sales.promotional_stock_detail set
id=null,
promotional_stock_id=null;
---- 修改列类型及长度
alter table sales.promotional_stock_detail modify(
id varchar2(50),
promotional_stock_id varchar2(50)
);
--- 将原来的数据copy回来
update sales.promotional_stock_detail set
id=id_tmp,
promotional_stock_id=promotional_stock_id_tmp
;
--- drop 新增的临时列
alter table sales.promotional_stock_detail drop (id_tmp,promotional_stock_id_tmp);
--- 添加主键约束
alter table sales.promotional_stock_detail add constraint promotional_stock_detail_pk primary key (id);