在开发过程中,常常因为业务需求变更而对数据库表结构进行修改,现需要将table_test表中的field1~field4 四个字段由number(7,2)改成number(9,2),直接更改会报ORA-01440错误:要减小精度或标度,则要修改的列必须为空。我们可以按照以下SQL语句中的4个步骤走:
1.备份原始表(table_test)数据至备份表中(table_test_bak),防止数据丢失
2.删除原始表数据
3.更改表结构,可以使用SQL也可以在可视化编辑器中手动更改表结构
4.将备份表中的数据还原到原始表中
--1.备份数据
create table table_test_bak as select * from table_test;
--2.删除数据
delete from table_test;
commit;
--3.更改表结构
alter table table_test modify( field1 number(9,2), field2 number(9,2), field3 number(9,2), field4 number(9,2))
--4.还原数据
insert into table_test select * from table_test_bak;
commit;