oracle中,a表和b表有主外键关联,我想删除a表,自动把b表也删除的sql语句是什么啊?

解决方案 »

  1.   

    Oracle只有删除主表数据关联删除从表数据的在建立约束时候用cascade on delete 实现删除表是DDL操作,怎么可能用一个SQL实现关联,写个schema触发器还差不多
      

  2.   

    这只能通过创建SCHEMA触发器来实现,具体PL/SQL代码参考如下:(实现删除表T4时自动删除T5)CREATE OR REPLACE TRIGGER TriggerDropTable
      BEFORE DROP ON SCHEMA  
    BEGIN
        EXECUTE IMMEDIATE 'DROP TABLE T5';
    END TriggerDropTable;
    但这个触发器有些问题,就是当我删除用户的任何一个表时,都会删除T5,而不是仅删除T4时才会删除T5
    再有当删除T5时,又回引发DROP事情,从而会不断的递归下去。
      

  3.   

    把操作加到if ora_dict_obj_name = 'T4' then   end if; 里面不过即使加了,这种触发器也是根本不应该存在于生产环境中的。
      

  4.   

    alter table 表名 add constraint 外键名 foreign key (列名) references 
    表名 (列名) on delete cascade