2015-09-07 47 views
0

如何讓我的SQL僅在特定條件下級聯?如何讓我的SQL僅在特定條件下級聯?

我想要子級聯刪除父級column1值時,只有在子女的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; 

回答

1

您可以通過觸發器來做到這一點。更具體地說,你必須爲表父母的after delete事件寫一個觸發器來檢查條件,如果它是真的,那麼刪除子表中的相應記錄

+0

aah。你打敗了我。在下面給出同樣的答案:) – Utsav

1

你嘗試使用觸發器嗎?它會更簡單,透明,如果你不需要修改定義就不需要它們,你可以禁用它們。根據需要給出一個適當的例子,並嘗試創建它們。