0
我在表B中有一個外鍵給表A.我想要的是,在A中刪除記錄,使用級聯刪除或級聯設置B中的FK字段中的NULL取決於該記錄的某一列中的值應該被刪除。oracle刪除級聯條件
至於我不能在刪除級聯使用條件下,我的想法是要始終使用級聯SET NULL,並添加觸發器表B
AFTER UPDATE..
FOR EACH ROW
BEGIN
IF :new.a = 1 THEN
DELETE FROM B WHERE ID = :new.id
ENDIF;
END;
但我得到一個錯誤,smthing如「表變異,觸發器/功能可能看不到它「。
所以,我改變了我的if-else到過程調用
AFTER UPDATE
BEGIN
cleanup_table_b();
END;
create or replace procedure cleanup_table_b
IS begin
DELETE FROM B WHERE a = 1;
end;
但仍然出現錯誤ORA-04091,ORA-06512,ORA-04088
的的企業經營理念,是B中的記錄仍然可以是有用的(不是通過外鍵),所以我想執行一個清理和刪除用途記錄。
在表A上使用刪除觸發器刪除或設置null引用記錄在表B中。 – Rene
@Rene是的,但是這使得一張桌子保持另一個。更好的結構解決方案將是如果一張桌子可以保持自己 – user1448906
你必須解釋你爲什麼認爲這是「更好」。 – Rene