oracle 怎么修改主键类型

qkniit 2010-12-23 05:59:09
oracle 怎么修改主键类型,要保证数据库的数据不变;

主键ID 原来是NUMBER的,现在要改成VARCHAR2(32)的
...全文
806 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zerone2013 2012-11-14
  • 打赏
  • 举报
回复
alter table test drop primary key; -- 删除约束 alter table test add constraint ID primary key(name); --修改约束
Zerone2013 2012-11-10
  • 打赏
  • 举报
回复
问的怎么修改主键约束 和怎么删除主键约束
nvmtest 2011-12-31
  • 打赏
  • 举报
回复
-#alter table fyt_ntj_table7 modify( dzdx varchar2(10));
--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;
Oraclefans_ 2010-12-23
  • 打赏
  • 举报
回复
如果有外键关联,操作如下
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.最后启动主键约束,同时删除外键约束,重新建立起约束关系,参考上面的的语句
qkniit 2010-12-23
  • 打赏
  • 举报
回复
有外键关联
gelyon 2010-12-23
  • 打赏
  • 举报
回复
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
njlywy 2010-12-23
  • 打赏
  • 举报
回复
有外键关联么

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧