日期:2014-05-17  浏览次数:21108 次

oracle 怎么修改主键类型
oracle 怎么修改主键类型,要保证数据库的数据不变;

主键ID 原来是NUMBER的,现在要改成VARCHAR2(32)的

------解决方案--------------------
1.重新建一张表temp,要修改的字段ID类型设为VARCHAR2(32)
2.复制数据到新表: insert into temp select * from 旧表test
3.删除旧表: drop table test
4.修改新表temp为test : alter table temp rename to test

------解决方案--------------------
如果有外键关联,操作如下
1.禁用约束
alter table youtablename disable constraint contraintname;
参考例子:
select 'alter table '||table_name||' drop constraint '||constraint_name||';' from user_constraints where constraint_type='R'
禁用所有外键约束

Sql代码
select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
启用所有外键约束

Sql代码
select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
2.修改你的id的数据类型,如果不成功,你也可以使用上面的语句禁用主键约束
alter table youname modify id varchar2(20);
3.最后启动主键约束,同时删除外键约束,重新建立起约束关系,参考上面的的语句