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;
时间: 2024-10-10 10:50:38

ORA-01439: 要更改数据类型, 则要修改的列必须为空的相关文章

ORA-01440 要减小精度或者标度.则要修改的列必须为空.

--1 创建备份表 drop table contract_kangjia_back; create table contract_kangjia_back as select * from contract_kangjia; --2 将原有表的数据删除 delete from contract_kangjia; --3 改变原有表的数据结构 alter table contract_kangjia modify sell_money number(10,5) ; --4 将原有表的数据插入新的

racle修改字段类型时报"要更改的列必须为空"处理方法

执行以下语句报"要修改数据类型,则要更改的列必须为空"      alter table 表名 modify (目标字段 varchar2(100)); 解决步骤: 第一步,在表中加一个临时字段      alter table 表名 add 临时字段 目标字段原来的类型; 第二步,将目标字段的值付给临时字段,并将目标字段置空      update 表名 set 临时字段=目标字段,目标字段=null; 第三步,修改目标类型      alter table 表名  modify 目

SQLServer修改数据列

修改数据列 在开发和生产过程中,列名的拼写错误或者列名的更改是需要操作数据表的,大多数情况下都是不需要修改的. 以下几种情况下我们并不能直接修改数据列: 1.用于索引的列. 2.用于 CHECK.FOREIGN KEY.UNIQUE 或 PRIMARY KEY 约束的列. 3.与默认值(由 DEFAULT 关键字定义)相关联的列,或绑定到默认对象的列. 4.绑定到规则的列. 使用SSMS数据库管理工具修改列 1.连接数据库,打开要修改的数据库,选择数据表->右键点击->选择设计. 2.在新打开

mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型

mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型 ,代码肯定省事的呀 --添加表列 alter table test add address nvarchar(50) null; --删除表列 alter table test drop column address; --修改表列字段类型 alter table test alter column address char(10); --修改表列字段名 exec sp_rename '表名.[列名]', '新的列名', '

何修改WAMP中mysql默认空密码--转

何修改WAMP中mysql默认空密码 http://www.cnblogs.com/hooray/archive/2011/07/23/2114792.html WAMP安装好后,mysql密码是为空的,那么要如何修改呢?其实很简单,通过几条指令就行了,下面我就一步步来操作. 首先,通过WAMP打开mysql控制台. 提示输入密码,因为现在是空,所以直接按回车. 然后输入“use mysql”,意思是使用mysql这个数据库,提示“Database changed”就行. 然后输入要修改的密码的

19 MySQL概念 数据库 数据表 数据类型 增加删除修改查询 WHERE Order By Limit

数据库管理系统DBMS 数据库中相关概念 数据库 数据表 记录 字段 数据 登录和退出MySQL客户端 查询自己的MySQL服务器有几个数据库 二.退出MySQL客户端的命令 修改root用户的密码 在MySQL客户端来修改密码(当前账号的密码) 数据库操作 创建数据库 显示所有数据库 删除数据库 选择数据库 更改数据库默认字符集 数据表操作 显示当前数据库中的所有表 创建数据表 显示表的创建 列的常用属性 修改数据表 删除数据表 显示表结构 MySQL数据类型 整型 浮点型 字符型 文本型 日

Oracle的学习二:表管理(数据类型、创建/修改表、添加/修改/删除数据、数据查询)

1.Oracle表的管理 表名和列名的命名规则: 必须以字母开头: 长度不能超过30个字符: 不能使用oracle的保留字: 只能使用如下字符:A-Z, a-z, 0-9, $, # 等. Oracle支持的数据类型: 字符型 char 定长 最大2000个字符 char(10)----'小韩' 前四个字符放'小韩',后添加6个空格补全.(查询效率高) varchar2(20) 变长 最大4000个字符 vachar2(10)----'小韩' oracle分配四个字符,这样可以节省空间. clo

学习制作iOS程序第二天:创建子目录、更改项目名称、修改启动画面、修改类前缀、新建启动控制器、修改APP图标

四.根据实际情况创建相应的目录 删除系统默认的部分文件ViewController.h,ViewController.m,Main.storyboard.LaunchScreen.xib 目录根据情况创建,每个人都会不一样的.我的如下. 五:更改项目名称 1.进入项目的Targets属性,找到Build Settings,搜索Product Name,修改属性为真实的软件名称. 2.打开Supporting Files目录下的Info.plist,修改Bundle name为真实的软件名称. 3

TargetProcess 中更改了域名如何修改里面的附件地址

在默认情况,TP 安装的目录是默认的网站(IIS)的targetprocess2下面,但是如果想采用 tp.targetprocess.cn 这种方式直接访问,则需要做一些设置. 基本要点如下: 1. 新建一个网站 同样绑定80端口,采用不同域名 http:*:80:tp.targetprocess.cn 2. 注意在目录指向目录targetprocess2/wwwroot - 采用应用池 targetprocess application pool 3. 将其下的javascript 转为Ap