Oracle 如何修改列的資料型別

2021-08-25 10:38:16 字數 1160 閱讀 9986

問題

表a有資料,想修改其中有一列a1為varchar2(10)型(原來為number型)。

當時開始執行sql

alter table a modify (a1 varchar2(10));

結果報錯了

sql> alter table a modify (a1 varchar2(10));

alter table a

modify(a1 varchar2(10))

ora-01439: 要更改資料型別,則要修改的列必須為空

a1中是有資料的,我不想破壞原來的資料,只想修改列型別。

解決方法

網上找到的方法

create table bbb as select * from aaa where 1=2;

alter table bbb modify (a1 varchar2(32));

insert into bbb select * from aaa;

drop table aaa;

rename table bbb to aaa;

--#alter table fyt_ntj_table7   modify( dzdx varchar2(10));

--1.新增列add(newcolumn varchar2(10))

alter table fyt_ntj_table7 add(newcolumn varchar2(10));

--2.賦值newcolumn = dzdx

update fyt_ntj_table7 set newcolumn = dzdx;

commit;

--3.刪除原來的列和列的約束drop column dzdx

alter table fyt_ntj_table7 drop column dzdx cascade constraints;

--4.重新命名newcolumn to dzdx

alter table fyt_ntj_table7 rename column newcolumn to dzdx;

還是有問題的,不能做為乙個事務去處理。

如果中間的update 沒成功,就把第三步刪除列給x了,就慘了,所以要做這一列的副本列。。。保險啊。。

Oracle如何修改列不為空的時候的資料型別

新增臨時列 alter table tablename add filedname temp number 2 將臨時列的值置空 update zyt set id temp null alter table tablename modify filedname null 將要更新的字段值挪到臨時列...

oracle修改表增加列刪除列修改列

tag oracle修改表 sql增加列 sql刪除列 sql修改列 1.增加列 alter table table name add column datatype default expr column datatype.例如 sql alter table emp01 add eno numb...

oracle修改表增加列刪除列修改列

oracle修改表 sql增加列 sql刪除列 sql修改列 1.增加列 alter table table name add column datatype default expr column datatype.例如 sql alter table emp01 add eno number 4...