我在 Oracle 11g 中有一个表(包含数据),我需要使用 Oracle SQLPlus 执行以下操作:
目标:更改列的类型TEST1
在表中UDA1
from number
to varchar2
.
建议的方法:
- 备份表
- 将列设置为空
- 改变数据类型
- 恢复价值
以下不起作用。
create table temp_uda1 AS (select * from UDA1);
update UDA1 set TEST1 = null;
commit;
alter table UDA1 modify TEST1 varchar2(3);
insert into UDA1(TEST1)
select cast(TEST1 as varchar2(3)) from temp_uda1;
commit;
与索引有关(以保留顺序),对吧?
create table temp_uda1 (test1 integer);
insert into temp_uda1 values (1);
alter table temp_uda1 add (test1_new varchar2(3));
update temp_uda1
set test1_new = to_char(test1);
alter table temp_uda1 drop column test1 cascade constraints;
alter table temp_uda1 rename column test1_new to test1;
如果该列上有索引,则需要重新创建它。
请注意,如果旧列中的数字大于 999,则更新将会失败。如果这样做,则需要调整旧列中的最大值varchar
column
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)