`

oracle数据库中表级联删除

阅读更多
数据库表中没有设置级联删除.怎样用SQL语句实现:
如:EMP表中有字段DEPT_NO是外键
   POS表中有字段DEPT_NO是外键
   DEPT表中有字段DEPT_NO,
如何实现删除DEPT表中数据时将EMP表,POS表中的相关数据也删除;

 

两种方法,个人建议你选择方法一,简单方便

方法一:触发器解决(下面的代码可以不用修改,copy直接用)
create or replace trigger delete_dept
before delete on DEPT
for each row
begin
 delete from EMP where DEPT_NO = :old.DEPT_NO;
 delete from POS where DEPT_NO = :old.DEPT_NO;
end;
/

方法二:修改你的外键设置,达到级联删除的目的,具体实现如下:
 a)先查询出EMP表和POS表中 外键的名称(如果你知道 外键名这一步可以省略)
 select CONSTRAINT_NAME,TABLE_NAME from user_constraints where CONSTRAINT_TYPE ='R' and TABLE_NAME in('EMP','POS');
 
 b)删除EMP表和POS表上的外键后 重新建立允许级联删除的外键模式
   alter table EMP drop constraint 外键名;
   alter table POS drop constraint 外键名;
   alter table EMP add constraint 外键名 foreign key(DEPT_NO) references DEPT(DEPT_NO) on delete cascade;
   alter table POS add constraint 外键名 foreign key(DEPT_NO) references DEPT(DEPT_NO) on delete cascade;
分享到:
评论

相关推荐

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

    里整理了Oracle中的三种级联操作,其中Oracle定义外健的时候可以定义级联删除,但是没有级联修改的语法,当然可以用触发器实现,下面我们详细来看Oracle数据库中的级联查询、级联删除、级联更新操作教程

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

    方法一:创建约束时设定级联删除(但一般由于各种原因或出于各种考虑在创建数据库时没有设定级联删除)SQL语句: 代码如下:CREATE TABLE “U_WEN_BOOK”.”FARTAB” (“FAR_ID” NUMBER(10) NOT NULL,“FAR_NAME” ...

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

    1.可以扫描oracle导出的dmp文件中的表空间信息,然后替换为指定的表空间名,要以将多个表空间名转换为一个表空间名 2.可以进行常规的一些导入导出新建数据库操作 3.可以生成包含子表的按条件删除的脚本,维护数据时...

    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 ...

    数据库oracle 学习笔记重点总结

    数据库,oracle ,强制删除,系列,事物控制,级联删除,sql,sqlpuls

    zhangsanlzh#Solutions#oracle常用操作命令1

    1、创建表空间 2、创建用户并授权 3、导出数据库到桌面 4、导入dmp文件到数据库 5、登录数据库 6、级联删除用户所有数据 7、删除表空间

    非常全的oracle文档

    17.2. 管理表中的列 86 17.3. 重命名表 87 17.4. 移动表 87 17.5. 删除表 88 17.6. 约束分类 88 17.7. 查看约束 93 17.8. 指定级联操作类型 94 十八、 SQL基础 95 18.1. SQL简介 95 18.2. 数据定义语言 97 18.3. ...

    mysql数据库的基本操作语法

    级联删除:删除主表的数据时,关联的从表数据也删除,则需要在建立外键约束的后面增加on deletecascade 或on delete set null,前者是级联删除,后者是将从表的关联列的值设置为null。 create table student( id int...

    jdbc基础和参考

    ORM:使用元数据信息来描述对象和数据库之间的关系,并且能够自动实现java中持久化对象到关系型数据库中表的映射 脏检查:自动对缓存中的数据进行检查,并且选择在合适的时机和数据库之间进行交互,以保持数据的...

    Hibernate注解

    很奇怪),分别是CascadeType.PERSIST(级联新建),CascadeType.REMOVE(级联删除),CascadeType.REFRESH(级联刷新),CascadeType.MERGE(级联更新),CascadeType.ALL(全部四项) * 方法一 * 主表: ?@OneToOne...

    sql总结.doc

    1、 (1)索引是对数据库表中一列或多列进行排序的一种结构。 (2)Mysql中搜索引擎Innodb(聚簇索引)和Mysiam(非聚簇索引)都采用B+,oracle也采用B+树实现 注:聚簇索引:一张表只能建立一个聚簇索引,以主键建立...

    javaweb博客网站

    1.用的struts2,数据库用的Oracle11g,DAO用的DBUtils,富文本用的百度的UEditor 2.界面风格是仿照博客园的,其实就是扒下来的,所以html有点乱,将就看吧 3.数据库没设计好,外键直接引用的主键属性,所以没做级联...

    风越asp代码生成器 V3.5

    02、支持Microsoft SQL Server、Microsoft Access、Oracle、MySql、Excel、FoxPro、FoxBase、Text等数据库连接 03、支持从数据表、视图(Access为查询)中读取数据字段 04、支持通过数据表中的组合主键传递参数 05、...

    asp.net知识库

    Oracle数据库字典介绍 0RACLE的字段类型 事务 CMT DEMO(容器管理事务演示) 事务隔离性的一些基础知识 在组件之间实现事务和异步提交事务(NET2.0) 其它 在.NET访问MySql数据库时的几点经验! 自动代码生成器 关于能...

    DBJ.jar:一个开放源代码库,用于替换本机JDBC协议,DBJ.jar可以轻松地通过某种方法连接到数据库,因此用户必须在功能中提供凭据和参数,DBJ才能处理其余部分(连接,驱动程序管理器,准备的声明,结果集等)

    DBJ.jar 一个用于替换本机...不具有连接对象的GetAll,具有/不具有连接对象的特定字段)@Overloading 更新类(尚未实施) 删除类(尚未实施) 触发器类(尚未实现) 事务的级联回滚(尚未实现)连接类(包com.dbj.con

Global site tag (gtag.js) - Google Analytics