对于多表联合查询可能大部分开发者不会过于陌生,但是对于初学者经常会在建表时忽略主外键约束,或者没有数据库编程的经验,不会使用类似于触发器、存储过程这些。当需要对多表进行删除操作时,无外乎进行后台的多表联合查询,后台判断是否存在关联,存在关联则不删除,不存在则使用DML语言删除并返回前台结果。
现把经常用到的几个多表联合删除的方法总结如下,并附具体例子:
create table a
(
id varchar(20) primary key,
password varchar(20) not null
)
create table b
(
id int identity(1,1) primary key,
name varchar(50) not null,
userId varchar(20),
foreign key (userId) references a(id) on delete cascade
)
表B创建了外码userId 对应A的主码ID,声明了级联删除
测试数据:
insert a values ('11','aaa')
insert a values('23','aaa')
insert b values('da','11')
insert b values('das','11')
insert b values('ww','23')
删除A表内id为‘11’的数据,发现B表内userId 为“11”也被数据库自动删除了
delete a where id='11'
事例二(网络资源)
(deptno number(10) not null,
deptname varchar2(30) not null,
constraint pk_dept_test primary key(deptno));
(empno number(10) not null,
fname varchar2(20) ,
lname varchar2(20) ,
dept number(10) ,
constraint pk_emp_test primary key(empno));
add constraint fk_emp_dept_test foreign key(dept) references dept_test(deptno) on delete set null;
insert into dept_test values(2,'财务部');
insert into emp_test values (2,'Mary','Song',1);
insert into emp_test values (4,'Linlin','Zhang',1);
EMPNO FNAME LNAME DEPT
---------- -------------------- -------------------- ----------
2 Mary Song
3 Linda Liu 2
4 Linlin Zhang
SQL> select * from dept_test;
DEPTNO DEPTNAME
---------- ------------------------------
2 财务部
Table truncated.
SQL> truncate table dept_test;
truncate table dept_test
*
ERROR at line 1:
ORA-02266: unique/primary keys in table referenced by enabled foreign keys
如果想要删除父表,可以有两种方法:
1、先drop子表,再drop父表。
2、先删除约束alter table emp_test drop constraint fk_emp_dept_test;,再drop父表。
2.采用存储过程(数据库开发)
A表:
AID Aname 主健:AID
B表:
BID BelongAID Bname 主健:BID,外健:BelongAID
C表:
CID BelongBID Cname 主健:CID,外健:BelongBID
D表:
DID BelongCID Dname 主健:DID,外健:BelongCID
其中:
A表和B表通过A.AID和B.BelongAID 创建了外健关系
B表和C表通过B.BID和C.BelongBID 创建了外健关系
C表和D表通过C.CID和D.BelongCID 创建了外健关系
3.采用触发器(个人喜欢用的,当然要看实际需要)
删除Text 表中的一条记录的同时删除对应记录表 relog中的记录
create trigger Text_delete on Text for delete
as
begin
delete from relog where tid = (select rid from relog)
end
相关推荐
本文章主要介绍Python中字典(Dict)的详解操作方法,包含创建、访问、删除、其它操作等,需要的朋友可以参考下。 字典由键和对应值成对组成。字典也被称作关联数组或哈希表。基本语法如下: 1.创建字典 >>> dict = {'...
无序关联容器,如unordered_map和unordered_multimap,基于哈希表实现,使得查找、插入和删除操作的平均复杂度为O(1),但在最坏情况下可能退化到O(N)。 unordered_set和unordered_multiset是无序关联容器,允许重复...
vector是最常用的动态数组,支持随机访问,但在插入和删除元素时可能需要移动大量元素。string是专门用于字符串的容器,而deque(双端队列)允许在两端进行高效插入和删除,适合用作缓冲区。list则是一个双向链表,...
有序集合中的每个元素都有一个唯一的成员(member)和一个与之关联的分数(score),分数决定了成员在集合中的排序。不同于集合,有序集合的元素不是无序的,而是按照分数从小到大排列。成员不能重复,但分数可以。 ...
1.3 小结 1.4 思考题 第2章 Java对象持久化技术概述 2.1 直接通过JDBC API来持久化实体域对象 2.2 ORM简介 2.2.1 对象-关系映射的概念 2.2.2 ORM中间件的基本使用方法 2.2.3 常用的ORM中间件 2.3 ...
1.3 小结 1.4 思考题 第2章 Java对象持久化技术概述 2.1 直接通过JDBC API来持久化实体域对象 2.2 ORM简介 2.2.1 对象-关系映射的概念 2.2.2 ORM中间件的基本使用方法 2.2.3 常用的ORM中间件 2.3 ...
1.3 小结 1.4 思考题 第2章 Java对象持久化技术概述 2.1 直接通过JDBC API来持久化实体域对象 2.2 ORM简介 2.2.1 对象-关系映射的概念 2.2.2 ORM中间件的基本使用方法 2.2.3 常用的ORM中间件 2.3 ...
1.3 小结 1.4 思考题 第2章 Java对象持久化技术概述 2.1 直接通过JDBC API来持久化实体域对象 2.2 ORM简介 2.2.1 对象-关系映射的概念 2.2.2 ORM中间件的基本使用方法 2.2.3 常用的ORM中间件 2.3 ...
本章介绍一对多关联关系的映射方法,重点介绍inverse属性和cascade属性的用法。本章还将介绍通过Hibernate API来保存、修改和删除具有关联关系的对象的方法。 7.1 建立多对一的单向关联关系 148 7.1.1 [many-to-...
本章介绍一对多关联关系的映射方法,重点介绍inverse属性和cascade属性的用法。本章还将介绍通过Hibernate API来保存、修改和删除具有关联关系的对象的方法。 7.1 建立多对一的单向关联关系 148 7.1.1 [many-to-...
- **年终结转后的科目删除**:结转后删除科目需要清理相关联的内容,如凭证、转账定义等。 - **期初余额调整**:跨月调整期初余额需在未记账的状态下进行,若已记账,则需反记账。 - **清除损益类明细科目期初...
这种设计提高了链表操作的灵活性,如插入和删除等。链表的基础结构是`struct list_head`,它包含两个指向其他`list_head`类型的指针,`next`和`prev`。 为了使用这个链表库,开发者需要在其自定义的数据结构中包含`...
除了上述的基本使用方法之外,PHP还提供了其他多种用于操作数组的函数,比如array_push()用于向数组末尾添加一个或多个元素,array_pop()用于移除数组最后一个元素并返回它,array_shift()移除数组第一个元素并返回...
- **1.4 小结** - 本章介绍了.NET的概念、特点以及C#语言在.NET框架中的角色和特性。 - 重点强调了C#作为一种现代编程语言的重要性和实用性。 ##### 第二章:运行环境 —— 全面了解.NET - **2.1 .NET结构** - ...
【数据库系统概论(第五版)PPT...10. **小结**:这部分可能总结了本章的主要概念和操作,帮助学习者巩固所学知识。 通过这些内容,读者可以了解到SQL的基本语法和常用操作,对于理解和应用数据库管理系统具有重要意义。
用友T6是一款广泛应用于中小企业财务管理的软件,其功能涵盖了财务、供应链、生产制造等多个方面。在实际使用过程中,用户可能会遇到各种问题,以下是一些常见问题及其解决方案。 **系统方面** 1. **备份账套菜单...
- **功能描述**:集成常用的小工具,提高工作效率。 - **关键操作**: - 工具选择 - 工具使用 - **技术要点**: - 工具实用性:确保工具能够解决实际问题。 - 用户友好性:工具界面友好,易于操作。 ##### 8. ...
02.03.03 单表删除开发 02.03.03.01 案例开发 02.03.03.01.01 页面流开发 02.03.03.01.02 页面开发 02.03.03.01.03 逻辑流开发 02.03.03.01.04 完善页面流开发 02.03.03.02 部署运行 02.03.03.02.01 测试运行...
1.7 本章小结 33 第2章 Android应用的界面编程 35 2.1 界面编程与视图(View)组件 36 2.1.1 视图组件与容器组件 36 2.1.2 使用XML布局文件控制UI 界面 40 2.1.3 在代码中控制UI界面 41 2.1.4 使用...