解决方法
您可以声明级联删除的外键约束,以便在删除父行时自动删除子行.
sql> create table parent ( 2 parent_key number primary key 3 ); Table created. sql> create table child ( 2 child_key number primary key,3 parent_key number,4 constraint fk_child_parent foreign key( parent_key ) 5 references parent( parent_key ) 6 on delete cascade 7 ); Table created. sql> insert into parent values( 1 ); 1 row created. sql> insert into child values( 10,1 ); 1 row created. sql> commit; Commit complete. sql> delete from parent where parent_key = 1; 1 row deleted. sql> select * from child; no rows selected
我个人不是这种级联删除的粉丝 – 我宁愿看到对子表的删除作为从父进程中删除的过程的一部分,以便程序的流程都在一个地方.级联外键就像触发器,因为它们可以通过添加对于通过代码进行通知和跟踪而难以阅读的操作来严重地使程序流复杂化.