最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Oracle10g删除主键约束后无法删除唯一约束索引问题的模拟与分析

来源:动视网 责编:小采 时间:2020-11-09 10:50:56
文档

Oracle10g删除主键约束后无法删除唯一约束索引问题的模拟与分析

Oracle10g删除主键约束后无法删除唯一约束索引问题的模拟与分析:当先创建唯一约束后再创建主键约束的情况下,如果使用普通方法删除主键约束后,唯一约束索引不会被删除,这是Oracle 10g的一个PR 当先创建唯一约束后再创建主键约束的情况下,如果使用普通方法删除主键约束后,唯一约束索引不会被删除,这是Oracle
推荐度:
导读Oracle10g删除主键约束后无法删除唯一约束索引问题的模拟与分析:当先创建唯一约束后再创建主键约束的情况下,如果使用普通方法删除主键约束后,唯一约束索引不会被删除,这是Oracle 10g的一个PR 当先创建唯一约束后再创建主键约束的情况下,如果使用普通方法删除主键约束后,唯一约束索引不会被删除,这是Oracle


当先创建唯一约束后再创建主键约束的情况下,如果使用普通方法删除主键约束后,唯一约束索引不会被删除,这是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删除主键约束后无法删除唯一约束索引问题的模拟与分析:当先创建唯一约束后再创建主键约束的情况下,如果使用普通方法删除主键约束后,唯一约束索引不会被删除,这是Oracle 10g的一个PR 当先创建唯一约束后再创建主键约束的情况下,如果使用普通方法删除主键约束后,唯一约束索引不会被删除,这是Oracle
推荐度:
标签: 问题 10g oracle10g
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top