关于Oracle 级联操作
写项目时候遇到这样一个问题,“A表与B表的关系是父子关联关系,A是B的父,将A中某一已经与B进行关联的行进行删除操作,之后发现B表仍存在关联关系“,故思考如何在数据库进行操作,经过百度以及查阅书籍,得知Oracle本身是有级联操作的。
在此记录。
提到“级联操作”必离不开”外键“何为外键? --”如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键;
定义外键的sql语句:
foreign key(idB) references A(idA)
key之后的是主表的id,references A(id A) 则为子表的表名(子表的关联id)
外键约束事件触发。既然有外键约束,当违反约束时会发生什么?我们把它的反应看作事件,一共有四种:
1、级联:当主表更改时,从表跟从更改。
2、不执行任何操作。
3、设置null。
4、设置默认值。
例如: 图中 重症肌无力是肌肉萎缩的子类,那么当关联关系确定之后,删除其中某一个,则关联关系表中所对应的关联关系也被删除。
主表A ILLINFO(我项目中的表名) 子表B (ILLINFO_ILLINFO)
执行SQL:
ALTER TABLE ILLINFO_ILLINFO ADD CONSTRAINT FK_ILLINFO_ID FOREIGN KEY(ILLINFO_FAR) REFERENCES ILLINFO(ID) ON DELETE CASCADE
CASCADE指当删除主表中被引用列的数据时,级联删除子表中相应的数据行。
另一种方法通过触发器去执行级联删除操作。
/*** @Author: Liuys * Description : 级联删除*/
ALTER TRIGGER [dbo].[trigCascadeDelete] --触发器名ON [dbo].[main] ---作用于哪张表instead of delete ---什么动作触发
AS
BEGINdeclare @id int --声明@id变量select @id=id from deleted --取出要删除的iddelete from branch where mainId =@id --先删除从表中的数据行delete from main where id =@id ---再删除主表中的数据行
END
第三种方法就是存储过程去做,页面点击删除,调用一个存储过程。存储过程执行两个delete语句。。(当然这种方法可能有点原始且笨重。)
People calls us farmers, but we know we are artists
--JueShan By 2018-07-31
关于Oracle 级联操作相关推荐
- oracle级联怎么设置,Oracle级联操作详解
Oracle外键级联删除和级联更新 1 级联删除 在添加foreing key约束时,还可以指定级联操作的类型,主要用于确定当删除(on delete) 附表中的一条记录时,如何处理子表中的外键字段, ...
- Oracle 12C -- truncate的级联操作
在之前的版本中,存在外键约束时,无法直接truncate父表.在12C中,对truncate操作添加了级联操作特性. 前提是创建外键约束时,使用了"on delete casacde&quo ...
- oracle级联更新与级联删除
Oracle级联删除:可以使用外键约束来实现,建立表的主外键关系,给列设置级联删除.如下: --创建了CLASS表,并设置ID字段为主键. -- Create tablecreate table CL ...
- Oracle笔记(操作Scott中的数据)
文章目录 1 数据库相关概念 2 数据库的发展阶段 3 Oracle相关介绍 3.1 软件相关介绍 3.2 软件目录结构介绍 3.3 软件原理 3.3.1 软件体系架构 3.3.2 本地网络服务配置 ...
- Hibernate学习总结(5)——一对多的级联操作
首先介绍一下一对多是什么,一对多关系是关系数据库中两个表之间的一种关系,该关系中第一个表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可以与第一个表中的一个行相关. 例如:我有一 ...
- MySQL权限篇之REFERENCES以及外键级联操作
REFERENCES,对象权限. 建立外键关系权限. 用户要在tb1上建立外键,外键指向tb2,那么该用户必须在tb2上有REFERENCES权限. 当然,还要有在tb1上alter的权限. 比如: ...
- Oracle集合操作
Oracle集合操作 · UNION:并集,所有的内容都查询,重复的显示一次 · UNION ALL:并集,所有的内容都显示,包括重复的 · INTERSECT:交集:只显示重复的 · MINUS:差 ...
- LINQ那些事儿(2)- 简单对象的CRUD操作和Association的级联操作
从(1)我们看到,当生成entity class定义时,entity class或xml mapping文件中都已经完整的包含了entity和关系数据库的映射信息了,LINQ2SQL会根据这些信息来把 ...
- mysql外键约束语句级连_mysql之外键约束(级联操作等) 父表子表
不理解的地方标注问号. 网上不同的博客讲的,之间似乎有些矛盾,求推荐好书. 写得不好请指出错误. 父表和子表 当两个表建立一对多关系的时候,"一"的那一端是父表,"多&q ...
最新文章
- java并行任务dispatch_Java模拟 双分派Double Dispatch
- 函数的方法call、apply、bind
- java源码生成jar可执行文件
- 2月上旬全球六大顶级域名最新动态 .COM占73.3%
- c++ 共享内存_Python3.8多进程之共享内存
- Android programming on Mac 之安装Eclipse
- dos和linux有关系吗,DOS和Linux近年来的发展比较
- C# LINQ to XML
- emui内核支持kvm吗_Linux专题—使用kvm搭建虚拟机
- 在线小说阅读器app
- 单个圆孔菲涅耳衍射的matlab模拟,矩孔和圆孔菲涅耳衍射的计算机模拟
- 数据可视化工具在医疗领域的应用
- 太阳能逐日自动跟踪系统,太阳能光伏追光追日发电实训系统
- 彩虹云仿小柯秒赞主题模板
- Android开发自定义短视频系统源码全局悬浮按钮
- lambda分组集合中list和set区别
- [ESP8266学习笔记]components_nvs 非易失性存储 Non-Volatile Storage(NVS),保存数据到flash
- B: 火车站(stack)
- ChatGPT接入微信公众号(手把手教学)
- 【牛客】链表的回文结构