背景
原本设置的一个varchar2类型字段长度不够,现在想扩展一下,执行下面语句报错
alter table my_table MODIFY my_column VARCHAR2(350);
ORA-01439:要更改数据类型,则要修改的列必须为空
问题分析
这是由于my_column
列已经存在了字符内容,无法直接对其进行扩容操作。
问题解决
通过新建列my_column_new
,把my_column
的值赋予my_column_new
,删除my_column
,将my_column_new
改名为my_column
。
注意:该操作会删除字段!操作前请做好数据备份!
- 新建列
my_column_new
alter table my_table add my_column_new varchar2(300);
- 把
my_column
的值赋予my_column_new
update my_table set my_column_new = my_column;
- 删除
my_column
alter table my_table drop column my_column ;
- 将
my_column_new
改名为my_column
alter table my_table rename column my_column_new to my_column;