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 ;
有时在丢掉约束后,发现主键字段依然保持着非空属性,这也意味约束建立之前,此字段被设置成了非空;若索引是基于主键约束而生成的,那直接删除约束后索引与非空属性也随即丢掉了
分享到:
相关推荐
2. **级联删除与更新**:外键约束的ON DELETE CASCADE和ON UPDATE CASCADE选项可以自动处理相关行的删除和更新,但可能会引发意外的数据删除。 五、实际应用案例 1. **员工信息表**:员工ID为主键,姓名、性别等为...
根据提供的文件信息,我们可以...掌握了这些命令后,你可以有效地管理和维护Oracle数据库中的各种对象。通过这些命令,不仅可以创建、修改和删除各种数据库对象,还可以设置复杂的约束条件以确保数据的完整性和安全性。
数据库对象是Oracle数据库中存储和管理数据的各种结构,包括表、视图、索引、存储过程、函数、触发器、序列、同义词等。下面我们将深入探讨这些对象及其重要性。 首先,**表**是Oracle中最基本的数据库对象,它用于...
- SQL Server、Oracle 和 MySQL 都提供了查询系统对象、表结构、错误信息等的方法,例如 SQL Server 的 `SELECT * FROM sysobjects`,Oracle 和 MySQL 的 `SELECT * FROM sysdatabases` 或 `SHOW VARIABLES LIKE '%...
- `CASCADE`:级联删除,即删除用户的同时也会删除该用户创建的所有对象,包括表、视图等。 #### 删除表空间 删除表空间前需确保该表空间未被任何用户使用: ```sql DROP TABLESPACE BCC INCLUDING CONTENTS AND ...
在外键约束中还可以设置级联删除选项,即当主表中的记录被删除时,自动删除外键表中对应的记录: ```sql REFERENCES ... ON DELETE CASCADE; ``` ### 八、级联删除表及其约束 如果要删除一个表及其所有的约束,...
`drop table 表名 cascade constraints` 这个命令在删除表的同时会删除与之相关的约束,包括外键约束,这将会影响到依赖于该表的其他对象。 2. **级联删除**: `on delete cascade` 是在创建外键约束时使用的,当...
- `CASCADE CONSTRAINTS`表示级联删除依赖于该表空间的所有约束条件。 ### 二、创建与管理用户 #### 1. 创建用户 ```sql CREATE USER oa1 IDENTIFIED BY oa DEFAULT TABLESPACE poba TEMPORARY TABLESPACE temp; `...
其中`cascade`选项表示级联删除该用户的对象,即如果该用户拥有表或其他依赖项,这些对象也会被一同删除。 #### 四、删除表空间 表空间是Oracle数据库中存储数据的基本单位之一,有时候可能需要删除表空间来释放...
`CASCADE`参数表示级联删除,即同时删除该用户的所有对象,包括表、视图等。若未指定`CASCADE`,且用户有对象,则无法直接删除用户。 #### 二、创建与删除表空间 **创建临时表空间**: ```sql CREATE TEMPORARY ...
SQL Server 的外键约束支持级联删除和级联更新,而 Oracle 只支持级联删除。创建外键约束时,两个系统都有相应的语法,但在级联操作上有所不同。 以上只是 Oracle 和 SQL Server 在几个关键方面的对比,实际上,...
以上就是根据提供的文件信息总结出来的Oracle数据库中关于表约束管理和索引管理的主要知识点。这些知识点对于理解和使用Oracle数据库至关重要,特别是在进行数据完整性控制和优化查询性能方面发挥着重要作用。
6. **级联删除**:在删除记录时自动删除相关的引用记录。 ```sql reference on delete cascade; ``` 7. **级联删除表**: ```sql drop table cascade constraints; ``` #### Oracle工具使用 除了以上提到...
Oracle 基本语句 Oracle 是一种广泛使用的关系数据库管理系统,它提供了丰富的语句...这条语句添加了一个名为 stu_fk 的外键约束在 stuinfo 表的 stu_id 列上,引用 students 表的 id 列,并且设置了级联删除的约束。
创建外键约束,当主表中的记录被删除时,子表中的相关记录也会被级联删除。 13. **连接列**: `select concat(列1, 列2) from 表名;` 将两个列的内容连接在一起。 14. **截取字符串**: `select substr(列名, ...
- **级联操作**: 设定级联更新或删除规则。 - **约束**: 在数据库层面强制执行参照完整性。 **2.5 字段设计** ##### 2.5.1 字段类型 - **选择合适的类型**: 根据数据特性和需求选择最合适的字段类型。 - **规范化...
根据提供的文件信息,我们可以归纳总结出一系列与Oracle数据库管理及操作相关的知识点,这些知识点主要集中在SQL语句、PL/SQL函数、索引管理和表约束等方面。下面将详细展开每个部分的关键概念和技术要点。 ### ...
- `CASCADE`选项表示级联删除,即在删除用户的同时也会删除该用户拥有的所有对象。 #### 五、删除表空间 1. **删除表空间前的注意事项**: - 在删除表空间之前,需要确保该表空间不再被其他用户使用。 - 如果表...