oracle 怎么修改主键类型,要保证数据库的数据不变;主键ID 原来是NUMBER的,现在要改成VARCHAR2(32)的
解决方案 »
- 请教一个关于系统表字段的问题
- 有关DBLINK的问题
- oracle中有没有计算日期的函数?
- 100分求一个SQL语句
- 请问为什么不执行到while循环里面去呢?
- 我的数据库有很多表,磁盘空间快没了!!
- 如何更改ORACLE的HTTP SERVER的端口号?
- 如何在Oracle中存储图像?
- 绝对难,超难的这句SQL语句该怎么写(1,联合查询;2,在此基础上在分组求和),写了那么多SQL语句,就是搞不定,谢谢各位大虾
- 一个老问题,sqlplus连接报错:协议适配器错误,请帮帮忙,谢谢!
- oracle异常问题?
- Oracle连接一个java软件(Ireport)后,想要从一张表中同时获取总人数、男生数、女生数,如何解决?
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.最后启动主键约束,同时删除外键约束,重新建立起约束关系,参考上面的的语句
--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;
alter table test add constraint ID primary key(name); --修改约束