`

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

 
阅读更多

今天在笔试过程中遇到了一个关于级联删除的问题,问题的内容大概是两个表:员工表(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了。 

分享到:
评论

相关推荐

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

    如果,现在有两张表A(id,xx.xx...),C(id,Cid,xx,xx...),预实现C中的id与A 中id级联删除、级联更新/数据同步,可有两种实现方式: 一. 利用sql server自带的级联删除、级联更新功能,即其外键约束途径 alter table ...

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

    表间的关系比较复杂,数据量又比较多,一个个删绝对会出大问题。于是实验了几种解决的办法,现小结一下。方法一:创建约束时设定级联删除(但一般由于各种原因或出于各种考虑在创建数据库时没有设定级联删除)SQL...

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

    主要介绍了MySQL使用外键实现级联删除与更新的方法,详细分析了mysql数据库与表的创建、数据插入、查询以及外链的使用与级联操作相关技巧,需要的朋友可以参考下

    oracle表空间替换转移级联删除脚本生成工具

    1.可以扫描oracle导出的dmp文件中的表空间信息,然后替换为指定的表空间名,要以将多个表空间名转换为一个表空间名 ...3.可以生成包含子表的按条件删除的脚本,维护数据时用得上 4.可以按条件生成表数据的插入脚本

    ExpandAbleListView+checkbox数组方式级联,点击选择顶部文本显示,可删除

    ExpandAbleListView+checkbox数组方式级联,外层列表可展开收起,内层列表使用checkbox多选框,点击之后可在顶部的gridlayout显示,顶部显示的选中与checkbox选中状态关联,点击顶部选中的item,可取消选中状态,...

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

    from table //具有子接点ID与父接点ID的表 start with selfid=id //给定一个startid(字段名为子接点ID,及开始的ID号) connect by prior selfid=parentid //联接条件为子接点等于父接点,不能反 这个SQL主要用于...

    EfCore.SoftDeleteServices:在EF Core中提供简单的软删除和级联软删除的服务

    级联软删除:此库提供的服务可以模仿数据库级联删除,但可以软删除实体。 例如,“级联软删除公司”还可以软删除依赖关系(请参见下图)。 确保数据安全:该库可以处理包含过滤器多个部分的查询过滤器,例如使用多...

    Easy Data Transform(excel表格数据转换工具)官方正式版V1.20.0

    Easy Data Transform 是一款相当实用的excel表格数据转换工具,支持46种转换和60种文本编码,具有CSV文件分隔符和编码更改、多个数据表级联、日志文件过滤和分析、数据文件的合并和重复、数据删除电子邮件和地址列表...

    Spring+Hibernate一对多关联映射---部门与员工表的级联添加

    Hibernate 一对多关联映射的测试,主要使用部门与员工的级联关系进行添加测试.

    数据库完整性实验-完整代码.rar

    (8)创建一个级联删除触发器student_delete。要求:当从学生表中删除某学生信息时,同时删除score表中此学生相关的选课记录。 (9)创建一个触发器student_insert,实现功能:如果往学生表中插入数据,则自动修改...

    触发器练习答案(附有测试文档)

    2、当删除SC表中数据时,修改(或添加)SC_NUMBER中的数据。 3、当修改SC表中数据时,若修改的是学号,则对应修改SC_NUMBER表中的选课门数,否则打印“某某(学生姓名)的学生选课信息已经修改”信息。 1、修改...

    laravel-cascade-soft-deletes:实现软删除的雄辩模型的级联删除

    但是,这样做会失去使用数据库原本可以提供的级联删除功能的能力。 这就是该软件包旨在弥合使用SoftDeletes特性的功能差距的SoftDeletes 。代码样例<?phpnamespace App ;use App \ Comment ;use Dyr

    数据库原理及应用实验五(数据完整性和安全性)

    6. 掌握级联删除、级联修改方法。 7. 理解索引的概念与类型。 8. 掌握使用SQL Server Management Studio创建与维护索引的方法。 9. 掌握T-SQL语句创建与维护索引的方法。 10. 掌握SQL Server下的数据库安全管理机制...

    MySQL(分组,分页,约束,级联删除级联更新,多表查询)

    分组查询:group by ,一般配合聚合函数使用查出的数据才有意义。 查询的字段:1.分组字段本身 2.聚合函数 (2)案例演示 案例演示所用的表 CREATE TABLE `emp` ( `empno` int(11) DEFAULT NULL, `ename` varchar...

    详解Hibernate cascade级联属性的CascadeType的用法

    若对触发器来修改或删除关联表相记录,必须要删除对应的关联表信息,否则,会存有脏数据。所以,适当的做法是,删除主表的同时,关联表的信息也要同时删除,在hibernate中,只需设置cascade属性值即可。 cascade...

    将应用程序级联删除添加到雄辩模型中。-PHP开发

    当在数据存储级别上没有或不能实现参照完整性时,此包laravel-cascade-deletes此Laravel / Lumen软件包为Laravel的Eloquent ORM提供了应用程序级联的删除。 如果在数据存储级别上没有或不能实现引用完整性,则此包使...

    实验五数据库编程:包括触发器、级联更新删除和系统函数等

    一、实验目的及要求 1. 常见系统函数的使用方法。 2. 存储过程的使用方法。...自行插入若干虚拟数据: 2)Department应包括的属性有:部门代码departmentID、部门名称 deptname、部门简介deptmemo。

    数据库系统概论(王珊第五版)数据库实验9.doc

    3) 对于数据表sc的sno、cno字段定义为外码,使之与表student的主码sno及表cours e的主码cno对应,实现如下参照完整性: 删除student表中记录的同时删除sc表中与该记录sno字段值相同的记录; 修改student表某记录的...

    21天学通Oracle

    6.2.3 级联更新与级联删除 100 6.2.4 修改外键属性 102 6.2.5 外键使用 104 6.3 唯一性约束 105 6.3.1 唯一性约束简介 105 6.3.2 创建唯一性约束 105 6.3.3 修改唯一性约束 107 6.3.4 唯一性约束的使用 108 ...

Global site tag (gtag.js) - Google Analytics