当先创建唯一约束后再创建主键约束的情况下,如果使用普通方法删除主键约束后,唯一约束索引不会被删除,这是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
- 大小: 51.5 KB
分享到:
相关推荐
10. **索引类型**:索引字段值不唯一时,应选择`(B)` 普通索引,而不是唯一索引。 11. **删除表**:从数据库中删除表的命令是`(A)` `DROP TABLE`。 12. **DELETE语句**:`DELETE FROM S WHERE 年龄>60`会`(B)` 将S...
还包括对约束的理解,如主键、外键和唯一性约束。 4. 查询优化:理解SQL查询的工作原理,使用索引优化查询性能,以及使用Explain Plan分析查询执行计划。 5. 存储管理:学习如何管理表空间、数据段、索引段和回滚...
【Oracle 数据库模拟试卷知识点详解】 1. 数据库基础: - 算法的有穷性:算法必须能在执行有限个步骤之后终止,这是算法的基本性质之一。 - 数据结构:线性数据结构包括队列、线性表和栈,而二叉树是非线性的。 ...
Oracle数据库中的死锁是两个或更多事务在等待对方释放资源,从而导致事务无法继续执行的情况。在Oracle中,死锁的处理和预防是数据库管理的重要方面,尤其在高并发环境中。下面将详细讨论Oracle死锁的原因、具体分析...
4. **表和索引**:创建、修改和删除表格,理解主键、外键和唯一性约束的概念,以及索引的作用和类型(B树、位图、函数索引等)。 5. **数据库安全性**:用户管理、权限和角色的设定,以及如何通过GRANT和REVOKE操作...
- 主键与外键约束:确保数据完整性的机制。 #### 二、高级特性与性能优化 1. **事务处理** - 事务的概念:一组逻辑操作单元,必须作为一个整体完成或回滚。 - ACID特性:原子性(Atomicity)、一致性(Consistency...
这是因为外键约束涉及到引用另一个表中的主键或唯一键,因此需要确保有足够的权限来验证这些引用。 **6. 在进行条件查询时,如果只记得目标字符串的一部分,利用下列哪一关键字可以使用通配符比照?** - **答案:*...
1. **约束与数据完整性**:使用主键、外键、唯一性约束等保持数据一致性,避免冗余和错误。 2. **索引优化**:创建和管理索引,提升查询速度,但需平衡对写入操作的影响。 3. **权限管理**:分配和撤销对象权限、...
此外,约束是确保数据完整性的重要手段,包括主键约束(唯一标识每行)、外键约束(关联不同表的键)、非空约束(不允许字段值为空)等。序列是Oracle提供的一种自动增量数字生成器,常用于生成唯一ID,比如主键值。...
【Oracle SQL要求】主要涉及了Oracle数据库的基本操作,包括数据表的创建、数据的插入、删除和更新等核心概念。以下是对这些知识点的详细说明: 1. **Oracle数据库开发环境**: Oracle提供了多种数据库管理工具,...
- **约束和完整性**:学习如何使用主键、外键、唯一性约束来保证数据完整性。 - **索引和查询优化**:实践创建索引以提升查询性能,并学习使用EXPLAIN PLAN进行查询分析。 - **存储过程和函数**:通过示例了解如何...
每个表的设计都将尽可能地贴近Oracle原版,包括字段类型、主键、外键约束以及非空约束等。同时,脚本也会插入一些示例数据,以便你可以立即进行查询和分析。 在MySQL中运行Oracle的HR示例方案,可以帮助你理解以下...
4. **表的设计**:理解如何创建和设计表,包括主键、外键、唯一约束和非空约束等,以及如何使用DDL(Data Definition Language)语句进行操作。 5. **PL/SQL编程**:第五个资源专门讲述PL/SQL,它是Oracle特有的...
- **数据完整性约束**:包括主键、外键、唯一性约束等,确保数据的一致性和准确性。 - **聚合函数和分组**:学习如何使用SUM、AVG、MAX等聚合函数,以及GROUP BY子句对数据进行汇总分析。 - **子查询和连接**:掌握...
3. 数据库对象:包括表、视图、索引、序列、存储过程、触发器等的创建和管理,以及数据约束(如主键、外键、唯一性约束等)。 4. SQL查询:深入理解SQL查询语句,学习子查询、连接、集合操作、聚合函数等高级特性。...
3. 约束和完整性:了解主键、外键、唯一性约束的作用,以及如何实现数据的完整性。 4. SQL事务处理:学习如何开始、提交和回滚事务,理解其在确保数据一致性中的重要性。 5. 存储过程和函数:掌握自定义数据库操作的...
为了保证数据一致性,可以利用数据库的约束条件,如主键、外键和唯一性约束。 文件名"testh"可能代表测试数据或配置文件,这在部署和维护HRMS系统时是必不可少的。测试数据用于模拟真实环境,验证系统功能和性能,...
分析SQL语句的加锁情况,模拟死锁场景,以及分析死锁日志,有助于定位问题。优化SQL的方式包括添加合适的索引,避免返回不必要的数据,适当使用批量处理,以及调整SQL语句结构。同时,采用主从架构可以提升读取性能...
完整性规则如主键约束、外键约束确保数据的一致性;事务处理则保证了并发操作的正确性,如ACID(原子性、一致性、隔离性和持久性)原则。 数据库性能优化是数据库工程师的日常任务。这包括索引优化、查询优化、存储...
数据库应具备常见的表结构,支持不同类型的字段(如数值、文本、日期等),并提供相应的约束机制(如主键、外键、唯一性等)。 3.3 数据词典 数据词典是系统的重要组成部分,它记录数据库中的元数据,包括表名、...