修改数据库中已经存在数据的字段精度或者类型

需求更新要求某个字段支持小数点,数据库一开始设计的时候只支持整数,在通过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 );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值