Chinaunix首页 | 论坛 | 博客
  • 博客访问: 34874
  • 博文数量: 21
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 270
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-04 11:14
文章分类

全部博文(21)

文章存档

2013年(21)

我的朋友

分类: Oracle

2013-08-20 16:58:44

alter table fyt_ntj_table7   modify( dzdx varchar2(10)); 
如果列dzdx不为空,oracle不允许修改该列的数据类型。可通过以下步骤实现修改:

--1.添加列add(newColumn varchar2(10))  
alter table fyt_ntj_table7 add(newColumn varchar2(10));  
--2.赋值newColumn = dzdx  
update fyt_ntj_table7  set newColumn = dzdx;  
commit;   
--3.删除原来的列和列的约束drop column dzdx  
alter table fyt_ntj_table7 drop column dzdx CASCADE   CONSTRAINTS;  
--4.重命名newColumn to dzdx  
 alter table fyt_ntj_table7 rename column newColumn to dzdx;  
--还是有问题的,不能做为一个事务去处理。
--如果中间的update 没成功,就把第三步删除列给X了,就惨了,所以最好做这一列的副本列。

from:

http://neil-yang.iteye.com/blog/780358

阅读(330) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~