`

关于数据表级联删除的问题

 
阅读更多

今天在笔试过程中遇到了一个关于级联删除的问题,问题的内容大概是两个表:员工表(UserId,Username,deptno)和单位表(deptno ,deptName),其中员工表的deptno单位表的的deptno相一致,问:如何实现当删除一个单位时,其对应的单位的员工也要删除。当时没有答好,现总结如下:

 

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

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

alter table emp 
add constraint fk_emp_dept foreign key(deptno) references dept(deptno) on delete cascade; 

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

分享到:
评论

相关推荐

    sql数据库省市区表级联文件

    - **级联删除**:当删除父表中的一条记录时,自动删除所有子表中与此记录相关的所有记录。 ### 二、省市区表设计 #### 1. 表结构设计 在文件中,可以看到`province`、`city`和`area`三个表的设计。这些表的设计都...

    Java中单表和多表级联的增删改查

    - 当两个或更多表之间存在关联时,例如一对多、多对一或多对多关系,级联操作会涉及到一个表的操作导致另一个表的相关数据也发生变化。例如,删除一个用户可能需要同时删除与之相关的所有订单。 - Hibernate等ORM...

    MSserver自关联表的级联删除

    在这样的表中,级联删除是确保数据完整性的一个重要功能,即删除某条记录时,与其相关的所有依赖记录也应被删除。然而,自关联表的级联删除并不像简单的外键级联删除那样直接,因为它涉及到了递归关系。 在上述标题...

    qt实现sqlite3级联删除demo

    在这个"qt实现sqlite3级联删除demo"中,开发者可能已经提供了完整的代码示例,包括创建表、插入数据、级联删除以及异常处理等。在VS2010 + Qt5.40 + Win7环境下,这个示例应该能够成功编译和运行。为了进一步学习和...

    SQL server创建触发器实现级联删除

    级联删除是指当主表中的记录被删除时,自动删除与之相关的子表中的所有相关记录。这种需求常见于具有父级与子级关系的数据表中,例如: - **产品类别表**与**具体产品表**之间的关系:当删除某个类别时,需要同时...

    级联删除笔记【自用0分】

    级联删除和级联更新是数据库管理中非常重要的概念,特别是在多表关联的情况下,能够确保数据的一致性和完整性。本文将详细介绍如何在SQL Server中实现级联更新和级联删除,包括通过触发器的方式和使用外键约束的方式...

    mysql级联更新和级联删除

    **级联删除(Cascade Delete)**:当父表中的一行或多行被删除时,所有依赖于这些行的子表中的对应行也会被自动删除。 这两种机制有助于保持数据的一致性,避免出现“孤儿记录”或“悬挂记录”。 #### 二、MySQL中外...

    MySQL中利用外键实现级联删除、更新

    级联删除是指当父表中的记录被删除时,子表中的相关记录也被删除。级联更新是指当父表中的记录被更新时,子表中的相关记录也被更新。级联删除和更新可以确保数据的一致性和完整性,使得数据更加可靠。 在实践中,...

    存储过程-游标-级联删除

    在数据库管理中,级联删除是一种常见的操作,它涉及到一个表中的记录被删除时,与之关联的其他表中的记录也会自动被删除。在大型数据库系统中,这种功能通常通过外键约束来实现,但在某些情况下,如需要自定义删除...

    关于Hibernate级联删除的问题.doc

    级联删除(Cascade Delete)就是其中之一,当删除一个对象时,会根据配置自动删除与之相关联的对象。在文档中提到的场景下,我们来详细探讨Hibernate级联删除的原理和配置方法。 首先,我们要理解关系映射中的几个...

    用JDBC实现数据库的级联删除与更新

    例如,在 MySQL 中,可以在创建表时指定外键约束并开启级联删除/更新功能。 ### 3. JDBC 实现 #### 3.1 数据访问对象 (DAO) 设计 为了实现数据库操作的封装,采用 DAO 模式是非常常见的做法。这里我们将定义两个 ...

    hibernate many-to-many级联保存,级联更新,级联删除

    当调用`session.delete(student)`或`session.delete(course)`时,如果配置了级联删除,Hibernate会检查关联表,找出所有与被删除实体关联的记录,并一并删除。请注意,级联删除可能引起数据丢失,因此在使用时需谨慎...

    解析Oracle中多表级联删除的方法

    在Oracle数据库中,多表级联删除是一种常见的需求,特别是在数据关系复杂的环境中。级联删除允许在删除一个表中的记录时,自动删除依赖于该记录的其他表中的相关记录。以下将详细介绍三种在Oracle中实现多表级联删除...

    Oracle数据库中的级联查询、级联删除、级联更新操作教程

    Oracle数据库中的级联查询、级联删除和级联更新是数据库设计中常用的操作,它们用于在多表关联的关系型数据库中实现数据的联动处理。在Oracle中,这些操作主要涉及外键约束和触发器。 首先,级联查询是通过自连接来...

    世界各国城市级联数据库,有英文,精确到区域

    标题中的“世界各国城市级联数据库,有英文,精确到区域”指的是这个数据库包含了全球范围内的城市数据,并且这些数据是分级别的,可能包括国家、省份、城市、区县等不同层级,同时也提供了英文版本,方便国际化的...

    2019城市编码表,级联sql

    “级联sql”可能指的是SQL脚本中包含了级联操作,如级联删除或级联更新。当一个城市编码被修改或删除时,可能会影响到关联的其他表,例如省市区县的关系表,级联操作会确保这些关联数据的一致性。 标签“城市编码”...

    MySQL使用外键实现级联删除与更新的方法

    在MySQL中,外键是用来维护两个表之间...在实际应用中,需要根据业务需求和性能考虑来合理使用级联删除和更新,以达到最佳的数据管理效果。同时,理解并熟练运用这些概念对于任何MySQL数据库管理员来说都是至关重要的。

    级联增删改查

    例如,在一对多或者多对多的关系中,如果删除了一个父记录,而这个父记录与多个子记录有关联,级联删除会确保所有子记录也被同时删除,避免了数据的不一致性和孤立的记录。 "INverse"属性则通常在ORM(对象关系映射...

    SSH+级联菜单应用案例

    在级联菜单应用中,它用于将菜单数据模型与数据库表进行映射,提供CRUD(创建、读取、更新、删除)操作。级联菜单的数据通常存储在多层关联的表结构中,Hibernate可以通过HQL(Hibernate Query Language)或 ...

Global site tag (gtag.js) - Google Analytics