oracle 级联删除与级联更新小结

级联delete
首先建立一个主表txs_a:

  1. <span style="font-size:16px;">create table txs_a   
  2. (  
  3. id number(2) primary key,  
  4. name varchar2(4)  
  5. )  
  6. </span>  


 

然后创建一个从表txs_b:

 

  1. <span style="font-size:16px;">create table txs_b  
  2. (  
  3. a varchar2(4) primary key,  
  4. b varchar2(4),  
  5. id number(2),  
  6. constraints txsb_id_fk foreign key (id) references TXS_a(id) on delete cascade  
  7.   
  8. )  
  9.   
  10. </span>  



从表中的id为外键
向主表中插入数据:

  1. <span style="font-size:16px;">insert into txs_a values(4,'qq)  
  2.   
  3. insert into txs_a values(3,'ww')  
  4.   
  5. insert into txs_a values(2,'ee')  
  6.   
  7. insert into txs_a values(1,'rr')  
  8.   
  9. </span>  


 

向从表中插入数据:

 

  1. <span style="font-size:16px;">insert into txs_b values(1,'pp',1)  
  2. insert into txs_b values(2,'oo',2)  
  3. insert into txs_b values(3,'ii',3)  
  4. insert into txs_b values(4,'uu',4)  
  5.   
  6. </span>  


 

测试:

  1. <span style="font-size:16px;">delete from txs_a where id=1  
  2.   
  3. </span>  


 

查看从表中的id为1的行也被删除了

 

  1. <span style="font-size:16px;">create or replace trigger update_a_trriger  
  2. after update of id on a   
  3. for each row  
  4. begin  
  5. update b  
  6. set b.id=:new.id  
  7. where b.id=:old.id;  
  8. end;  
  9.   
  10. </span>  


级联Update

在oracle中不能像级联删除一样使用 on update cascade语句,如果需要级联更新就要创建触发器:

测试:

  1. <span style="font-size:16px;">update a set id=10 where id=1  
  2.   
  3. </span>  



查看从表b中id为1的行id值同时变为10
 

注意:

当使用 alter tableb add constraints b_id_fk foreign key(id) references a(id) on delete cascade 语句添加外键时 从表b中的外键id值应该与主表a中的id值保持一致,否则oracle会提示“未找到父项关键字”!


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值