oracle数据库中的级联删除操作

方法一:触发器解决
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;

方法三与方法二大致相同:
在建立表的时候建立级联删除关系:比如说两个表A,B。B表中的字段bId关联A表中的字段aId,建立B表的时候可以加上
foreign key (bId) references A(aId) on delete cascade

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Oracle的级删除是指在删除主表的记录时,自动删除的从表相关的记录。在Oracle,可以通过定义外键时添加级删除来实现这一功能。然而,创建数据库时为了防止其他人不小心删除操作错误,通常会将所有的外键都设置为没有级删除。如果需要实现级删除,可以使用触发器来实现。触发器是一种特殊的存储过程,可以在数据库的特定操作发生时自动触发执行。通过在删除主表记录的触发器编写删除从表记录的逻辑,可以实现级删除的功能。这样,在删除主表记录时,触发器会自动触发并删除的从表记录。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Oracle数据库的级查询、级删除、级更新操作教程](https://blog.csdn.net/JINXFOREVER/article/details/118021493)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Oracle实现级删除的四种方法](https://blog.csdn.net/CathySun118/article/details/4136407)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值