需求更新要求某个字段支持小数点,数据库一开始设计的时候只支持整数,在通过alert语句修改类型,出现了ora-001440的错误
第一种:
-- 创建备份表,备份存在数据
create table table_name_bak
AS SELECT * FROM table_name;
-- 删除数据
delete from table_name;
-- 修改 字段精度
alter table table_name modify ("要修改的字段" number(19,6));
-- 恢复数据
insert into table_name
select * from table_name_bak;
第二种:
在表中新增一列字段,原理和第一种一样
-- 同时添加三个字段
alter table STORE add (qty_bak number(19,3) ,qty2_bak number(19,3) ,qty3_bak number(19,3));
-- 更新 a字段值 到 a_bak字段上
update STORE a set a.qty_bak =qty ,a.qty2_bak =qty2
,a.qty3_bak =qty3_bak ;
-- 删除 a字段的值(有数据不能修改字段属性)
update STORE a set a.qty =null,a.qty2 =null,a.qty3 =null;
--更新 a字段的类型
alter table STORE modify (qty number(19,3) ,qty2 number(19,3) ,qty3 number(19,3));
-- 把 给a字段重新赋值 来自 bak
update STORE a set a.qty =qty_bak ,a.qty2 =qty2_bak
,a.qty3 =qty3_bak ;
-- 删除 bak 字段(单独执行每一条,要执行这条sql,同时执行所有sql,不需要执行这条sql,没有commit 实际字段并没有生成)
--alter table STORE drop(qty_bak ,qty2_bak ,qty3_bak );