Oracle – 删除子行

前端之家收集整理的这篇文章主要介绍了Oracle – 删除子行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法在删除表的父行时强制删除所有相关行(子行).

我的表有太多的参照完整性.我想知道在oracle中实现这个目标的简单方法是什么.

我感谢您的支持.

解决方法

您可以声明级联删除的外键约束,以便在删除父行时自动删除子行.

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

我个人不是这种级联删除的粉丝 – 我宁愿看到对子表的删除作为从父进程中删除的过程的一部分,以便程序的流程都在一个地方.级联外键就像触发器,因为它们可以通过添加对于通过代码进行通知和跟踪而难以阅读的操作来严重地使程序流复杂化.

猜你在找的Oracle相关文章