oracle不修改constraint方法级联删除到触发器入门

今天遇到需要级联删除的情况,在网上找到 一些级联删除的办法,其中个人认为最简便的是使用触发器实现级联删除,因为普遍实现级联删除的做法都是修改constraint来达到目的的,这样稍微麻烦了一些。
一,触发器解决级联删除
sql语句如下:
其中TUDI_LOG中的TDID为外键,参考的是TUDI中的TDID。

delete from TUDI where TDNAME='测试';
create or replace trigger delete_tudi
before delete on TUDI
for each row
begin
delete from TUDI_LOG where TDID = :old.TDID;
end;

二,触发器格式
我还是初学oracle,对触发器还不太熟悉,所以查阅了关于触发器的资料,了解到触发器的格式为:

create [or replace] trigger trigger_name 
   before|after 
   event1 [ or event2 or event3 …] 
   on table_name [for each row] 
   begin 
   statement;end; 
   /*event通常是insert、delete或update等DML操作
     For each row的意义是:在一次操作表的语句中,每操作成功一行就会触发一次;不写的话,表示是语句级触发器,则无论操作多少行,都只触发一次;
   */

触发器分为语句级触发器和行级触发器,区别就是语句级触发器执行一次DML语句执行一次,而行级触发器是DML每操作一条记录就触发一次,而行级触发器就涉及到新值和旧值。
三,新值和旧值
关键字: :new和:old
new 出现在insert和update,在insert中表示将要插入的新数据,在update中表示更新后的新数据;old在delete和update中出现,在delete中表示将要被删除的数据,在update中表示将要被替换的旧数据。

详细触发器关于:new和:old的入门参考下面链接:
触发器学习笔记(:new,:old用法)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值