`
geelong
  • 浏览: 117209 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

cascade 外键完整性约束

阅读更多

oracle中使用on delete cascade和on delete set null来建立外键

其面我们介绍了创建外键约束时如果使用oracle默认的创建方式, 在删除被参照的数据时,将无法被删除,这一点在oracle9i中给了我们更多灵活的选择,我们可是使用on delete cascade和 on delete set null关键字来决定删除被参照数据时是否要将参照这个数据的那些数据一并删除,还是将那些参照这条数据的数据的对应值赋空。(被参照数据:主键的表上的数据  参照数据:外键上表的数据)

 

只是对被参照数据的操作级联(参照数据),没有对参照数据级联(被参照数据)

 

 

例如下面这两个表中分别存的时员工的基本信息和公司的部门信息。我们为
create table dept
(deptno number(10) not null,
deptname varchar2(30) not null,
constraint pk_dept primary key(deptno));

create table emp
( empno number(10) not null,
fname varchar2(20) ,
lname varchar2(20) ,
dept number(10) ,
constraint pk_emp primary key(empno));

然后我们现在分别使用这两个关键字来增加外键试一下,首先我们来试一下on delete cascade

alter table emp
add constraint fk_emp_dept foreign key(dept) references dept(deptno) on delete cascade;
先增加外键。然后插入数据。
insert into dept values(1,’销售部’);
insert into dept values(2,’财务部’);
insert into emp values (2,’Mary’,'Song’,1);
insert into emp values (3,’Linda’,'Liu’,2);
insert into emp values (4,’Linlin’,'Zhang’,1);
然后现在我要删除销售部,会有什么后果呢?
delete from dept where deptno = 1;
我们发现除了dept中的一条数据被删除了,emp中两条数据也被删除了,其中emp中的两条数据是参照了销售部的这条数据的,这就很容易理解on delete cascade了。

接下来我们再来看on delete set null,顾名思义了,这种方式建立的外键约束,当被参照的数据被删除是,参照该数据的那些数据的对应值将会变为空值,下面我们还是通过试验来证明on delete set null作用:
首先恢复刚才的那几条数据,然后更改约束:
alter table emp
add constraint fk_emp_dept foreign key(dept) references dept(deptno) on delete set null;
然后我们在执行删除操作:
delete from dept where deptno = 1;
你也会发现除了dept中的销售部被删除以外,emp中参照这条数据的两条数据的dept的值被自动赋空了,这就是on delete set null的作用了。

使用on delete set null有一点需要注意的是,被参参照其他表的那一列必须能够被赋空,不能有not null约束, 对于上面的例子来说是emp中dept列一定不能有not null约束,如果已经定义了not null约束,又使用了on delete set null来删除被参照的数据时,将会发生:ORA-01407: 无法更新 (”DD”.”EMP”.”DEPT”) 为 NULL的错误。

总的来讲on delete cascade和on delete set null的作用是用来处理级联删除问题的,如果你需要删除的数据被其他数据所参照,那么你应该决定到底希望oracle怎么处理那些参照这些即将要删除数据的数据的,你可以有三种方式:
禁止删除。这也是oracle默认的
将那些参照本值的数据的对应列赋空,这个需要使用on delete set null关键字
将那些参照本值的数据一并删除,这个需要使用on delete cascade关键字

分享到:
评论

相关推荐

    数据库实验八 完整性约束的实现

    ### 数据库实验八:完整性约束的实现 #### 实习目的 通过本次实验,学习者将掌握在SQL中实现数据完整性的方法,并进一步加深对关系数据模型中的三类完整性约束的理解。这不仅有助于确保数据的质量与一致性,还能...

    sql外键约束

    在SQL(结构化查询语言)中,外键约束是一种重要的关系数据库完整性机制,它用于确保数据的一致性和准确性。外键约束是两个表之间的一种关联,一个表中的外键引用了另一个表的主键,从而建立了两个表之间的联系。...

    数据库外键约束方式

    外键约束是数据库中实现参照完整性的重要手段,它能够确保数据的一致性和正确性。外键约束方式有多种,包括级联、置空和禁止三种方式。 级联(Cascade)方式是指当主表中的记录被删除或更新时,从表中的相关记录也...

    MySQL的约束-外键约束

    - **参照完整性**:外键约束确保了参照完整性,即只有存在的主键值才能被引用。如果尝试插入一个不存在的主键值,操作会失败。 - **级联操作**:通过设置外键约束为`CASCADE`,可以实现级联删除或更新,这在维护数据...

    MySQL完整性约束相关资料

    2. 参照完整性:参照完整性约束涉及到两个表之间的关系,通常通过外键实现。外键是指一个表中的字段,它是另一个表的主键的引用。这确保了只有存在的主键值才能被引用,防止了插入非法的外部引用。外键约束还支持...

    mysql外键的添加与删除参考.pdf

    MySQL 外键是关系数据库管理系统中的一种约束机制,它能够确保数据的一致性和完整性。外键是指在一个表中字段的值必须存在于另一个表中的字段值中。MySQL 中的外键只能在 InnoDB 存储引擎中生效,而其他存储引擎将...

    数据一致性守护者:MySQL外键约束深度解析

    外键约束是MySQL用来维护表与表之间引用完整性的强大工具。通过在表中定义一个外键,可以确保该表中特定列(或列集)的值必须对应另一表的主键值。这种机制有助于防止数据不一致的问题,例如在没有相应的主键值时...

    Mysql增加外键的方法

    正确使用外键不仅可以维护数据的一致性和完整性,还能在维护数据时减少可能出现的错误。 总之,通过上述的知识点介绍,我们可以了解到,在MySQL中建立外键并不复杂,关键是要确保数据表的存储引擎是InnoDB,并且要...

    71117408-A4-数据库第三次实验(插删改与完整性约束)1

    总结来说,这个实验主要探讨了SQL的CRUD操作与数据库完整性约束之间的关系,特别是如何处理域完整性、实体完整性和引用完整性。通过实验,我们可以理解数据库管理系统如何确保数据的准确性和一致性,这对于理解和...

    MySQL外键约束常见操作方法示例【查看、添加、修改、删除】

    在MySQL数据库中,外键约束是关系型数据库中用于维护数据完整性和一致性的重要工具。它确保了一张表中的数据与另一张表的数据之间的关联性,通常用于实现一对一、一对多或多对多的关系。本篇文章将详细讲解如何进行...

    MLDN魔乐科技_Oracle课堂18_外键约束

    在数据库设计中,外键约束是一项至关重要的概念,它确保了数据的一致性和完整性。本课程"MLDN魔乐科技_Oracle课堂18_外键约束"深入讲解了Oracle数据库中如何利用外键来实现关系间的引用完整性。下面将详细阐述外键...

    08第8 章完整性.pdf

    本章内容主要围绕数据库完整性展开,深入讨论了完整性约束的概念、分类、实现机制以及在数据库设计中的应用。 ### 知识点一:完整性约束的含义与分类 完整性约束是指数据库系统对于存储的数据必须遵守的一组规则,...

    外键关联整理脚本

    9. **测试策略**:在外键关联的测试中,应关注数据的完整性和一致性,使用TestComplete或其他测试工具,编写测试脚本模拟各种插入、更新、删除操作,确保外键约束正确执行。 10. **数据库重构**:在数据库重构过程...

    MLDN魔乐科技JAVA培训_Oracle课堂18_外键约束.rar

    在数据库设计中,外键约束是一项至关重要的概念,它确保了数据的一致性和完整性。外键(Foreign Key)是数据库关系之间的一种链接,允许在一个表中的数据引用另一个表中的数据,形成表之间的关联。在本MLDN魔乐科技...

    数据库技术与应用 设置学生表外键约束-A学习任务书.doc

    在数据库技术中,外键约束是关系数据库设计中不可或缺的一部分,它主要用于确保数据的一致性和完整性。本学习任务书将重点讲解如何在学生表中设置外键约束,以实现不同表之间的关联,这对于电子信息工程技术专业的...

    MariaDB数据库的外键约束实例详解

    通过外键约束,可以防止这样的情况发生,例如设置ON DELETE CASCADE和ON UPDATE CASCADE,当主键表中的数据被删除或更新时,外键表中的对应数据也会被相应地删除或更新,保持数据的完整性。 在MariaDB中创建外键...

    mysql的外键

    - 外键约束可能会降低写操作的性能,因为每次插入、更新或删除都需要检查参照完整性。 - 在InnoDB存储引擎中,外键约束是支持的;而在MyISAM存储引擎中,则不支持外键。 8. **实际应用** - 在电商系统中,订单表...

    MySql外键设置详解

    外键是数据库中的一种约束,用于确保数据的一致性和完整性。外键的作用主要有两个:一是让数据库自己通过外键来保证数据的完整性和一致性;二是能够增加 ER 图的可读性。 有些人认为外键的建立会给开发时操作数据库...

    掌握数据完整性:深入理解MySQL中的外键

    其中,参照完整性是通过外键约束来实现的,它是MySQL维护数据完整性的关键机制之一。 #### MySQL中的外键 外键(Foreign Key)是一种特殊的字段或字段组合,它在一个表中对应另一个表的主键。外键的主要作用是维护...

Global site tag (gtag.js) - Google Analytics