修改 字段精度

–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);

你可能感兴趣的:(Oracle,sql,数据库)