`
MyDicta
  • 浏览: 19153 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle 级联删除约束后索引对象仍然存在

 
阅读更多

Oracle 数据库里可能因索引与约束建立的依赖关系不同,在级联删除约束后索引对象可能仍然存在

 

示例:  

 

-- 建表

 

 

create table test_tmp

as

select rownum as task_id  from dual connect by rownum <= 10 ;  
 

 

-- 先建立索引

create unique index PK_TASK_ID on test_tmp(task_id); 
 

 

 

-- 再在基于此索引建立主键约束

alter table test_tmp add constraint PK_TASK_ID  primary key (task_id) using index PK_TASK_ID; 
 

 

 

 

-- 级联删除约束

alter table test_tmp drop constraint PK_TASK_ID cascade ; 
 

 

 

-- 此时发现仅仅只删除了主键约束,索引却保留了下来

select * from all_objects t where t.object_name= 'PK_TASK_ID' ; -- 索引返回

select * from all_constraints t where t.constraint_name= 'PK_TASK_ID' ; -- 无结果 
 

 

-- 解决办法,无论索引是否事先存在都可以成功执行

alter table test_tmp drop constraint PK_TASK_ID cascade drop index ;
 

 


有时在丢掉约束后,发现主键字段依然保持着非空属性,这也意味约束建立之前,此字段被设置成了非空;若索引是基于主键约束而生成的,那直接删除约束后索引与非空属性也随即丢掉了

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    oracle电子文档:数据库约束.rar

    2. **级联删除与更新**:外键约束的ON DELETE CASCADE和ON UPDATE CASCADE选项可以自动处理相关行的删除和更新,但可能会引发意外的数据删除。 五、实际应用案例 1. **员工信息表**:员工ID为主键,姓名、性别等为...

    oracle对象创建

    根据提供的文件信息,我们可以...掌握了这些命令后,你可以有效地管理和维护Oracle数据库中的各种对象。通过这些命令,不仅可以创建、修改和删除各种数据库对象,还可以设置复杂的约束条件以确保数据的完整性和安全性。

    Oracle学习第四章

    数据库对象是Oracle数据库中存储和管理数据的各种结构,包括表、视图、索引、存储过程、函数、触发器、序列、同义词等。下面我们将深入探讨这些对象及其重要性。 首先,**表**是Oracle中最基本的数据库对象,它用于...

    SQLserver、Oracle、Mysql语法与用法对比.doc

    - SQL Server、Oracle 和 MySQL 都提供了查询系统对象、表结构、错误信息等的方法,例如 SQL Server 的 `SELECT * FROM sysobjects`,Oracle 和 MySQL 的 `SELECT * FROM sysdatabases` 或 `SHOW VARIABLES LIKE '%...

    Oracle数据库用户角色、表空间创建、删除命令

    - `CASCADE`:级联删除,即删除用户的同时也会删除该用户创建的所有对象,包括表、视图等。 #### 删除表空间 删除表空间前需确保该表空间未被任何用户使用: ```sql DROP TABLESPACE BCC INCLUDING CONTENTS AND ...

    ORACLE经典常用语句

    在外键约束中还可以设置级联删除选项,即当主表中的记录被删除时,自动删除外键表中对应的记录: ```sql REFERENCES ... ON DELETE CASCADE; ``` ### 八、级联删除表及其约束 如果要删除一个表及其所有的约束,...

    Oracle常用的一些语法、命令和函数

    `drop table 表名 cascade constraints` 这个命令在删除表的同时会删除与之相关的约束,包括外键约束,这将会影响到依赖于该表的其他对象。 2. **级联删除**: `on delete cascade` 是在创建外键约束时使用的,当...

    oracle创建删除表空间和用户授权

    - `CASCADE CONSTRAINTS`表示级联删除依赖于该表空间的所有约束条件。 ### 二、创建与管理用户 #### 1. 创建用户 ```sql CREATE USER oa1 IDENTIFIED BY oa DEFAULT TABLESPACE poba TEMPORARY TABLESPACE temp; `...

    oracle数据库还原

    其中`cascade`选项表示级联删除该用户的对象,即如果该用户拥有表或其他依赖项,这些对象也会被一同删除。 #### 四、删除表空间 表空间是Oracle数据库中存储数据的基本单位之一,有时候可能需要删除表空间来释放...

    Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结

    `CASCADE`参数表示级联删除,即同时删除该用户的所有对象,包括表、视图等。若未指定`CASCADE`,且用户有对象,则无法直接删除用户。 #### 二、创建与删除表空间 **创建临时表空间**: ```sql CREATE TEMPORARY ...

    ORACLE与SQLSERVER的区别

    SQL Server 的外键约束支持级联删除和级联更新,而 Oracle 只支持级联删除。创建外键约束时,两个系统都有相应的语法,但在级联操作上有所不同。 以上只是 Oracle 和 SQL Server 在几个关键方面的对比,实际上,...

    oracle笔记二--plsql 编程.txt

    以上就是根据提供的文件信息总结出来的Oracle数据库中关于表约束管理和索引管理的主要知识点。这些知识点对于理解和使用Oracle数据库至关重要,特别是在进行数据完整性控制和优化查询性能方面发挥着重要作用。

    oracle优化笔记

    6. **级联删除**:在删除记录时自动删除相关的引用记录。 ```sql reference on delete cascade; ``` 7. **级联删除表**: ```sql drop table cascade constraints; ``` #### Oracle工具使用 除了以上提到...

    Oracle基本语句

    Oracle 基本语句 Oracle 是一种广泛使用的关系数据库管理系统,它提供了丰富的语句...这条语句添加了一个名为 stu_fk 的外键约束在 stuinfo 表的 stu_id 列上,引用 students 表的 id 列,并且设置了级联删除的约束。

    Oracle最常用的语句

    创建外键约束,当主表中的记录被删除时,子表中的相关记录也会被级联删除。 13. **连接列**: `select concat(列1, 列2) from 表名;` 将两个列的内容连接在一起。 14. **截取字符串**: `select substr(列名, ...

    Oracle运维最佳实践-上.pdf 带书签

    - **级联操作**: 设定级联更新或删除规则。 - **约束**: 在数据库层面强制执行参照完整性。 **2.5 字段设计** ##### 2.5.1 字段类型 - **选择合适的类型**: 根据数据特性和需求选择最合适的字段类型。 - **规范化...

    Oracle常见语句

    根据提供的文件信息,我们可以归纳总结出一系列与Oracle数据库管理及操作相关的知识点,这些知识点主要集中在SQL语句、PL/SQL函数、索引管理和表约束等方面。下面将详细展开每个部分的关键概念和技术要点。 ### ...

    Oracle数据库用户角色、表空间创建、删除命令.pdf

    - `CASCADE`选项表示级联删除,即在删除用户的同时也会删除该用户拥有的所有对象。 #### 五、删除表空间 1. **删除表空间前的注意事项**: - 在删除表空间之前,需要确保该表空间不再被其他用户使用。 - 如果表...

Global site tag (gtag.js) - Google Analytics