Oracle在表中有数据的情况下修改字段类型或长度的解决方法(oracle修改表的字段)没想到

随心笔谈9个月前更新 admin
230 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章描述了在数据库中进行字段修改的操作过程。首先,尝试修改表中COL1的数据类型为NUMBER(10),修改成功,因为表中无数据。接着插入测试数据。随后尝试修改COL2为VARCHAR2(20),但因表中已存在数据而被拒绝。为解决此问题,作者采用了缓存表的方法:创建临时表T_TABLE1,将原表数据复制过去并删除原表数据。最终,成功修改COL1为NUMBER(9)和COL2为VARCHAR2(20),并恢复原表数据。

– 尝试修改
— 修改成功,因为表中无数据
ALTER TABLE TABLE1 MODIFY COL1 NUMBER(10);

— 插入数据
INSERT INTO TABLE1 (COL1, COL2) VALUES (1, ‘test’);

— 再次尝试修改
— 修改失败,因为表中已有数据,不允许直接操作
ALTER TABLE TABLE1 MODIFY COL2 VARCHAR2(20);

— 先缓存表
CREATE TABLE T_TABLE1 AS SELECT * FROM TABLE1;

— 删除原表所有数据
DELETE FROM TABLE1;

— 修改字段
— 修改成功
ALTER TABLE TABLE1 MODIFY COL1 NUMBER(9);
— 修改成功
ALTER TABLE TABLE1 MODIFY COL2 VARCHAR2(20);

— 插入原数据
INSERT INTO TABLE1 SELECT * FROM T_TABLE1;

— 删除缓存表
DROP TABLE T_TABLE1;

© 版权声明

相关文章