四个表用触发器级联删除Oracle

四个表用触发器级联删除Oracle

有四个表,在建表的时候不允许建立外键,其中数据表中有个级联:
A系统(AID...)     
B数据库(BID,AID....)
C数据库表(CID,BID...)
D表的字段(DID,CID...) 

不使用约束条件,在ORCLE中进行级联删除。删除A的时候必须把A下面所有与AID相同的B数据库都删掉,并且把数据库里面的表,表的字段都删掉,删除B的时候必须把所有与BID相同的C数据库表以及C数据库表下面的字段都删掉。

利用Oracle触发器实现比较简单,下面是实现过程:

先创建A系统的触发器,在触发删除A表这一事件之前,找到A系统下面与AID相同的所有B数据库,先把所有满足条件的B数据库删除,再删除A系统。同理删除B数据库时候,也一样,先找到C

1.create or replace trigger appsys_delete
  before delete on dq_md_appsys for each row
declare
begin
  delete from DQ_MD_DB_DATABASE  where SYSTEM_ID =:old.SYSTEM_ID;
end appsys_delete;

2.create or replace trigger database_delete
  before delete on dq_md_db_database  
  for each row
declare
begin
    delete from DQ_MD_DB_TABLE where database_id =:old.database_id;
end database_delete;

3.create or replace trigger table_delete
  before delete on dq_md_db_table  
  for each row
declare
begin
  delete from dq_md_db_field where table_id =:old.table_id;
end table_delete;

 
 
posted @ 2013-03-07 22:35  积淀  阅读(646)  评论(0编辑  收藏  举报