ORA-01439: 要更改数据类型, 则要修改的列必须为空
此方法有3处update操作,建议根据实际情况的数据量测试评估效率后选用。
思路:定义要更新数据类型的列为[col_old],数据类型为[datatype_old],临时列为[col_temp],数据类型也为[datatype_old]。
根据[col_old],给表添加[col_temp],将[col_old]的数据赋值给[col_temp],再将[col_old]的数据清空,修改[col_old]的数据类型为[datatype_new],然后再将[col_temp]的数据赋值给[col_old],最后删除[col_temp]。
下面以将一张表某列的数据类型由 varchar2(64) 修改为 number为例,给出通用参考脚本。
1.定义变量并赋值
define table_name = 表名
define col_temp = 列名_temp
define col_old = 列名
define datatype_old = varchar2(64)
define datatype_new = number
2.执行脚本
prompt 1.alter table &table_name add &col_temp &datatype_old;
alter table &table_name add &col_temp &datatype_old; prompt 2.update &table_name set &col_temp = &col_old;
update &table_name set &col_temp = &col_old;
commit; prompt 3.update &table_name set &col_old = null;
update &table_name set &col_old = null;
commit; prompt 4.alter table &table_name modify &col_old &datatype_new;
alter table &table_name modify &col_old &datatype_new; prompt 5.update &table_name set &col_old = &col_temp;
update &table_name set &col_old = &col_temp;
commit; prompt 6.alter table &table_name drop column &col_temp;
alter table &table_name drop column &col_temp;
ORA-01439: 要更改数据类型, 则要修改的列必须为空的更多相关文章
- Oracle修改字段类型报错:“ORA-01439:要更改数据类型,则要修改的列必须为空”
在oracle修改user表字段name类型时遇到报错:“ORA-01439:要更改数据类型,则要修改的列必须为空”,是因为要修改字段的新类型和原来的类型不兼容. 如果要修改的字段数据为空时,则不会报 ...
- ORA-01440:要减小精度和标准,则要修改的列必须为空
修改字段的精度时,提示“ ORA-01440:要减小精度和标准,则要修改的列必须为空 ” 解决方法:将该表中的数据全部删除即可
- ora-01440:要减小精度或标度,则要修改的列必须为空
--由于业务需求变更,需要对oracle数据库productinfo表的productPrcie结构进行修改.修改表结构,必须是在表空的情况下才可以修改表结构.具体操作步骤: --1.查看produc ...
- ORA-01440 要减小精度或者标度.则要修改的列必须为空.
--1 创建备份表 drop table contract_kangjia_back; create table contract_kangjia_back as select * from cont ...
- racle修改字段类型时报"要更改的列必须为空"处理方法
执行以下语句报"要修改数据类型,则要更改的列必须为空" alter table 表名 modify (目标字段 varchar2(100)); 解决步骤: 第一步,在表中 ...
- Oracle 修改现有列的数据类型
如果表中有数据,Oracle是不能修改其数据类型的.但可以通过新建一个临时列,将要修改列的数据复制到临时列中,删除原列再修改临时列的名字.这样说好像有点拗口,分步解说一下. 表AC_REG中有列:is ...
- Oracle增加一列、修改一列数据类型
Oracle增加一列.修改一列数据类型: 添加一列: alter table A add( CFYJSNR varchar2(20)); 修改列: alter table A ren ...
- SQLServer修改数据列
修改数据列 在开发和生产过程中,列名的拼写错误或者列名的更改是需要操作数据表的,大多数情况下都是不需要修改的. 以下几种情况下我们并不能直接修改数据列: 1.用于索引的列. 2.用于 CHECK.FO ...
- C# 修改DataTable 列的 DataType
/// <summary> ///当DataTable中有值时,是不允许修改列的DataType /// 修改数据表DataTable某一列的数据类型和记录值 /// </summa ...
随机推荐
- JVM中对象的销毁
1.可达性分析算法: 可达性分析算法用来寻找将要销毁的对象,它的基本思路是:通过一系列的称为“GC ROOTs”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径成为引用链,当一个对象到GC ...
- 安装OS X虚拟机错误vcpu-0:VERIFY vmcore/vmm/main/physMem_monitor.c:1123
新建一个虚拟机, 选择客户机操作系统为Apple MacOS X 10.10, 其余参数可以默认. 注意建好之后不要急着打开客户机, 因为直接打开你会发现新建的客户机将会无法启动. 仔细阅读Mac O ...
- 手把手教android studio中安装Android Butterknife Zelezny (转)
原文地址:http://blog.csdn.net/xin917480852/article/details/51176524 用来快速生成findViewById() 安装方法: 打开Android ...
- jqueryui 进度条使用
<title></title> <script src="../Js/NewJs_CFJ/jquery.js" type="text/jav ...
- java学习笔记(1)
最近开始学习java基本技术,在这里总结一下我学到的内容: 1.Java的基本历史 java起源于SUN公司的一个GREEN的项目,其原先目的是:为家用消费电子产品发送一个信息的分布式代码系统,通过发 ...
- 完成整个DAO的实现及测试代码
package cn.itcast.domain; import java.util.Date; public class User { private int id; private String ...
- 谷歌发布的首款基于HTTP/2和protobuf的RPC框架:GRPC
Google 刚刚开源了grpc, 一个基于HTTP2 和 Protobuf 的高性能.开源.通用的RPC框架.Protobuf 本身虽然提供了RPC 的定义语法,但是一直以来,Google 只开 ...
- DDD实践问题之 - 关于论坛的帖子回复统计信息的更新的思考
之前,在用ENode开发forum案例时,遇到了关于如何实现论坛帖子的回复的统计信息如何更新的问题.后来找到了自己认为比较合理的解决方案,分享给大家.也希望能和大家交流,擦出更多的火花. 论坛核心领域 ...
- Module Zero之语言管理
返回<Module Zero学习目录> 概览介绍 如何开启 管理语言 管理本地化文本 概览介绍 ABP定义了一个健壮的UI本地化系统,它可用于服务端和客户端.它允许在不同的资源中(Reso ...
- Module-Zero之版本管理
返回<Module Zero学习目录> 概要介绍 版本实体 版本管理者 概要介绍 绝大多数的SaaS(多租户)应用都有多个具有不同特征的版本(包).因此,他们可以给租户(即客户)提供不同的 ...