Oracle只有删除主表数据关联删除从表数据的在建立约束时候用cascade on delete 实现删除表是DDL操作,怎么可能用一个SQL实现关联,写个schema触发器还差不多
这只能通过创建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事情,从而会不断的递归下去。
把操作加到if ora_dict_obj_name = 'T4' then end if; 里面不过即使加了,这种触发器也是根本不应该存在于生产环境中的。
alter table 表名 add constraint 外键名 foreign key (列名) references 表名 (列名) on delete cascade
BEFORE DROP ON SCHEMA
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE T5';
END TriggerDropTable;
但这个触发器有些问题,就是当我删除用户的任何一个表时,都会删除T5,而不是仅删除T4时才会删除T5
再有当删除T5时,又回引发DROP事情,从而会不断的递归下去。
表名 (列名) on delete cascade