【问题标题】:How do I get my SQL to cascade only on certain conditions?如何让我的 SQL 仅在某些条件下级联?
【发布时间】:2015-09-07 04:42:43
【问题描述】:

如何让我的 SQL 仅在特定条件下级联?

仅当 CHILD 的 column2C 不等于 NULL 时删除父级 column1 值时,我希望在级联上删除子元组。

例子:

create PARENT table(
    column1 varchar2(20) primary key, 
    column2 varchar2(20)
);

create CHILD table(
    column1C varchar2(20), 
    column2C varchar2(20) default NULL, 
    primary key(column1C,column2C)
);

alter table CHILD
    add constraint fk_const
    foreign key(column1C) references parent(column1)
    delete on cascade;

【问题讨论】:

    标签: sql oracle alter-table cascading-deletes


    【解决方案1】:

    你可以通过触发器来做到这一点。更具体地说,您必须为父表的删除后事件编写触发器以检查条件,如果为真则删除子表中的相应记录

    【讨论】:

    • 啊。你打败了我。在下面给出相同的答案:)
    【解决方案2】:

    您尝试过使用触发器吗?它会更简单、更透明,如果您不需要它们,您可以在不修改定义的情况下禁用它们。如果需要,请给出适当的示例并尝试创建它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-10
      • 1970-01-01
      • 1970-01-01
      • 2019-11-07
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      相关资源
      最近更新 更多