目標(biāo):
修改DSS.a_ods_wcwo_det中字段USE_EMP_NO的數(shù)據(jù)類型由NUMBER(16)變更為VARCHAR2(16)
修改列數(shù)據(jù)類型操作方法:
如果原數(shù)據(jù)庫表中沒有數(shù)據(jù),則可以直接使用:
alter table DSS.a_ods_wcwo_det modify (USE_EMP_NO VARCHAR2(16));
如果原數(shù)據(jù)庫表中有數(shù)據(jù)采用下面方法處理:
1.首先查看所要修改的數(shù)據(jù)類型的字段上是否有約束,如果有修改此約束為DISABLE,處理完字段后,修改約束為ENABLED.
select
'alter table ' || s.owner ||'.'||s.table_name ||' disable constraint ' || s.constraint_name || ';'
from dba_constraints s where s.owner ='DSS' AND S.table_name = upper('a_ods_wcwo_det')
and s.status ='ENABLED';
--alter table DSS.A_ODS_WCWO_DET disable constraint PK_A_ODS_WCWO_DET;
--alter table DSS.A_ODS_WCWO_DET enable constraint PK_A_ODS_WCWO_DET;
2.在目標(biāo)表中增加一列,字段類型為目標(biāo)字段類型。
alter table DSS.a_ods_wcwo_det add USE_EMP_NO_tmp001 VARCHAR2(16);
3.更新新字段數(shù)據(jù)為原字段數(shù)據(jù),原字段數(shù)據(jù)為NULL。
update DSS.a_ods_wcwo_det d set d.USE_EMP_NO_tmp001 = USE_EMP_NO,USE_EMP_NO = null;
commit;
4.修改原字段數(shù)據(jù)類型為目標(biāo)字段類型。
alter table DSS.a_ods_wcwo_det Modify USE_EMP_NO VARCHAR2(16);
5.修改原字段數(shù)據(jù)為新字段數(shù)據(jù),新字段數(shù)據(jù)為null。
update DSS.a_ods_wcwo_det d set d.USE_EMP_NO = d.USE_EMP_NO_tmp001,d.USE_EMP_NO_tmp001 = null;
commit;
6.刪除新字段。
alter table DSS.a_ods_wcwo_det drop column USE_EMP_NO_tmp001;
最后:不要忘記啟用步驟1中的約束哦
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。