Twenty-five years without you

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Oracle数据库中,外键约束只允许级联删除,不允许级联更新,因此,如果想要实现主表数据更新后,子表外键自动更新,只能取消外键关系,通过前端程序来维护实现完整引用,一个代替的解决方案是使用延迟约束和触发器:

1:建立延迟外键约束:

1 Alter table slavetable add constraint FK_ST_FID references primarytable (PID) on delete cascade deferrable;
View Code

 

2:建立触发器:

1 create or replace trigger TRG_ST_FID
2 after update on slavetable
3 for each row
4 begin
5     if :old.PID <> :new.PID then
6         update slavetable set FID=:new.PID where FID=:old.PID;
7     end if;
8 end;
View Code

 


这样可以实现级联更新。

posted on 2014-02-14 17:53  Rumble Zheng  阅读(457)  评论(0编辑  收藏  举报