如何仅在某些条件下使我的SQL级联?

时间:2015-09-07 04:42:43

标签: sql oracle alter-table cascading-deletes

如何仅在某些条件下使SQL级联?

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

示例:

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;

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

你尝试过使用触发器吗?它会更简单,更透明,如果您不需要它们而不修改定义,您可以禁用它们。如果需要,请提供适当的示例并尝试创建它们。