Oracle10g删除主键约束后无法删除唯一约束索引问题的模拟与分析
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle10g删除主键约束后无法删除唯一约束索引问题的模拟与分析,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2418字,纯文字阅读大概需要4分钟。
内容图文
![Oracle10g删除主键约束后无法删除唯一约束索引问题的模拟与分析](/upload/InfoBanner/zyjiaocheng/548/cadec921e1944530aa330c9811730f56.jpg)
当先创建唯一约束后再创建主键约束的情况下,如果使用普通方法删除主键约束后,唯一约束索引不会被删除,这是Oracle 10g的一个PR
当先创建唯一约束后再创建主键约束的情况下,如果使用普通方法删除主键约束后,唯一约束索引不会被删除,这是Oracle 10g的一个PROBLEM。
本文通过一个实验给大家演示一下这个问题的出现过程及处理方法。
【问题现象】
在10g环境下,在删除主键约束后,在插入重复数据时候仍然报“ORA-00001: unique constraint (SEC.PK_T) violated”错误。
现象是主键约束已经删除成功,,但是唯一约束索引没有级联删除。
【问题模拟】
1.创建表T
sec@ora10g> create table t (x int, y int);
Table created.
2.先创建惟一约束索引
sec@ora10g> create unique index pk_t on t (x);
Index created.
3.再创建主键约束
sec@ora10g> alter table t add (constraint pk_t primary key(x));
Table altered.
4.查看约束信息
sec@ora10g> col OWNER for a5
sec@ora10g> col CONSTRAINT_NAME for a30
sec@ora10g> col TABLE_NAME for a10
sec@ora10g> col INDEX_OWNER for a12
sec@ora10g> col INDEX_NAME for a10
sec@ora10g> select OWNER,CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,INDEX_OWNER,INDEX_NAME from user_constraints where table_name = 'T';
OWNER CONSTRAINT_NAME C TABLE_NAME INDEX_OWNER INDEX_NAME
----- ------------------------------ - ---------- ------------ ----------
SEC PK_T P T SEC PK_T
5.查看索引信息
sec@ora10g> select INDEX_NAME,INDEX_TYPE,GENERATED from user_indexes;
INDEX_NAME INDEX_TYPE G
---------- --------------------------- -
PK_T NORMAL N
GENERATED字段说明:
GENERATED VARCHAR2(1) Indicates whether the name of the index is system generated (Y) or not (N)
6.删除主键约束
sec@ora10g> alter table t drop constraint pk_t cascade;
Table altered.
7.确认约束和索引删除情况
sec@ora10g> select OWNER,CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,INDEX_OWNER,INDEX_NAME from user_constraints where table_name = 'T';
no rows selected
sec@ora10g> select INDEX_NAME,INDEX_TYPE,GENERATED from user_indexes;
INDEX_NAME INDEX_TYPE G
---------- --------------------------- -
PK_T NORMAL N
可见,此时索引没有被删除。
因此,此时如果插入重复的数据,还是会报违反“约束”
sec@ora10g> insert into t values (1,1);
1 row created.
sec@ora10g> insert into t values (1,1);
insert into t values (1,1)
*
ERROR at line 1:
ORA-00001: unique constraint (SEC.PK_T) violated
内容总结
以上是互联网集市为您收集整理的Oracle10g删除主键约束后无法删除唯一约束索引问题的模拟与分析全部内容,希望文章能够帮你解决Oracle10g删除主键约束后无法删除唯一约束索引问题的模拟与分析所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。