博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于 ORA-01439: 要更改数据类型, 则要修改的列必须为空
阅读量:5046 次
发布时间:2019-06-12

本文共 2609 字,大约阅读时间需要 8 分钟。

需求:原本是定义5个字段存储的类型全部都是 数字类型,后来需求变了,每个字段可能存储粘接类型 如:135/200这种格式

原本的数据表结构:

CREATE TABLE MTG_SOC_MEASURE(

    PKEY NUMBER(10,0),
    MTG_EQUIP_INFO_PTR NUMBER(10,0),  --机器信息,指向MTG_EQUIP_INFO 
    CUSTOMER_PART_NUMBER VARCHAR2(35), --生产型号,指向DATA0050
    WORK_ORDER_NUMBER    VARCHAR2(50),--工单号
    FACE_TIME  VARCHAR(10),  --面次  TOP  BOT
    TTYPE  VARCHAR2(30),     --类别:1代表“首板”,2代表“过程监控”
    SIZE_REQUIREMENTS VARCHAR(10),--尺寸要求
    MEASURE_1  NUMBER(10,3),
    MEASURE_2  NUMBER(10,3),
    MEASURE_3  NUMBER(10,3),
    MEASURE_4  NUMBER(10,3),
    MEASURE_5  NUMBER(10,3),

}

现在需要把 MEASURE_1、 MEASURE_2、 MEASURE_3、 MEASURE_4、 MEASURE_5数据类型改为VARCHAR2(50),但是表已经存在记录,因此需要中间字段进行操作,才能实现,分为以下5个步骤,如下:

--第一步,在表中加一个临时字段

alter table MTG_SOC_MEASURE add MEASURE_1_T   NUMBER(10,3);

alter table MTG_SOC_MEASURE add MEASURE_2_T   NUMBER(10,3);

alter table MTG_SOC_MEASURE add MEASURE_3_T   NUMBER(10,3);

alter table MTG_SOC_MEASURE add MEASURE_4_T   NUMBER(10,3);

alter table MTG_SOC_MEASURE add MEASURE_5_T   NUMBER(10,3);

--第二步,将目标字段的值付给临时字段,并将目标字段置空

update MTG_SOC_MEASURE set MEASURE_1_T=MEASURE_1,MEASURE_1=null;

update MTG_SOC_MEASURE set MEASURE_2_T=MEASURE_2,MEASURE_2=null;

update MTG_SOC_MEASURE set MEASURE_3_T=MEASURE_3,MEASURE_3=null;

update MTG_SOC_MEASURE set MEASURE_4_T=MEASURE_4,MEASURE_4=null;

update MTG_SOC_MEASURE set MEASURE_5_T=MEASURE_5,MEASURE_5=null;

--第三步,修改目标类型

alter table MTG_SOC_MEASURE  modify MEASURE_1 varchar2(50);

alter table MTG_SOC_MEASURE  modify MEASURE_2 varchar2(50);

alter table MTG_SOC_MEASURE  modify MEASURE_3 varchar2(50);

alter table MTG_SOC_MEASURE  modify MEASURE_4 varchar2(50);

alter table MTG_SOC_MEASURE  modify MEASURE_5 varchar2(50);

--第四步,将临时字段的值付给目标字段,并将临时字段置空

update MTG_SOC_MEASURE set MEASURE_1=MEASURE_1_T,MEASURE_1_T=null;

update MTG_SOC_MEASURE set MEASURE_2=MEASURE_2_T,MEASURE_2_T=null;

update MTG_SOC_MEASURE set MEASURE_3=MEASURE_3_T,MEASURE_3_T=null;

update MTG_SOC_MEASURE set MEASURE_4=MEASURE_4_T,MEASURE_4_T=null;

update MTG_SOC_MEASURE set MEASURE_5=MEASURE_5_T,MEASURE_5_T=null;

--第五步,最后一步,删除临时字段

alter table MTG_SOC_MEASURE drop column MEASURE_1_T;

alter table MTG_SOC_MEASURE drop column MEASURE_2_T;

alter table MTG_SOC_MEASURE drop column MEASURE_3_T;

alter table MTG_SOC_MEASURE drop column MEASURE_4_T;

alter table MTG_SOC_MEASURE drop column MEASURE_5_T;

 

修改后的表结构如下;

PKEY                 NOT NULL NUMBER(10)   

MTG_EQUIP_INFO_PTR            NUMBER(10)   
CUSTOMER_PART_NUMBER          VARCHAR2(35) 
WORK_ORDER_NUMBER             VARCHAR2(50) 
FACE_TIME                     VARCHAR2(10) 
TTYPE                         VARCHAR2(30) 
SIZE_REQUIREMENTS             VARCHAR2(50) 
MEASURE_1                     VARCHAR2(50) 
MEASURE_2                     VARCHAR2(50) 
MEASURE_3                     VARCHAR2(50) 
MEASURE_4                     VARCHAR2(50) 
MEASURE_5                     VARCHAR2(50) 

 

转载于:https://www.cnblogs.com/yxshao/p/10330895.html

你可能感兴趣的文章
Android 音量调节
查看>>
HTML&CSS基础学习笔记1.28-给网页添加一个css样式
查看>>
windows上面链接使用linux上面的docker daemon
查看>>
Redis事务
查看>>
Web框架和Django基础
查看>>
python中的逻辑操作符
查看>>
CSS兼容性常见问题总结
查看>>
HDU 1548 A strange lift (Dijkstra)
查看>>
每天一个小程序—0005题(批量处理图片大小)
查看>>
IIS的各种身份验证详细测试
查看>>
JavaScript特效源码(3、菜单特效)
查看>>
Linux常用命令总结
查看>>
yii模型ar中备忘
查看>>
C#线程入门
查看>>
CSS清除浮动方法
查看>>
JVM内存回收机制简述
查看>>
洛咕 P2480 [SDOI2010]古代猪文
查看>>
js-创建对象的几种方式
查看>>
JDK JRE Java虚拟机的关系
查看>>
2018.11.20
查看>>