加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle – 删除子行

发布时间:2020-12-12 13:01:06 所属栏目:百科 来源:网络整理
导读:有没有办法在删除表的父行时强制删除所有相关行(子行). 我的表有太多的参照完整性.我想知道在oracle中实现这个目标的简单方法是什么. 我感谢您的支持. 解决方法 您可以声明级联删除的外键约束,以便在删除父行时自动删除子行. SQL create table parent ( 2 pa
有没有办法在删除表的父行时强制删除所有相关行(子行).

我的表有太多的参照完整性.我想知道在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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读