您的位置:首页 > 数据库 > Oracle

oracle更改主外键关系类型并且不破坏原来数据

2014-04-14 09:57 471 查看
要修改先删除外键和和主键,通过创建临时的字段存数据 (目的是为了保留客户原来的数据),最后重新建立主键和外键
1、删除主外键关系"列类型与引用的列类型不兼容"

alter table 表名 drop constraint 关系名;

2、执行以下语句报"要修改数据类型,则要更改的列必须为空"

alter table 表名 modify (目标字段 varchar2(100));
解决步骤:
第一步,在表中加一个临时字段

alter table 表名 add 临时字段 目标字段原来的类型;
第二步,将目标字段的值付给临时字段,并将目标字段置空

update 表名 set 临时字段=目标字段,目标字段=null;
第三步,修改目标类型

alter table 表名 modify 目标字段 varchar2(100);
第四步,将临时字段的值付给目标字段,并将临时字段置空

update 表名 set 目标字段=临时字段,临时字段=null;
最后一步,删除临时字段

alter table 表名 drop column 临时字段;
3、创建主键和外键关系

alter table 主键表 add constraint PK_CC_NAME primary key (字段名)

using index

tablespace *** pctfree 10

initrans 2

maxtrans 255

storage

(

initial 64K

minextents 1

maxextents unlimited

);

alter table 外键表 add constraint FK_CC_NAME foreign key (字段名)

references 主键表(字段名);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: