2011-04-07 4 views
3

oracleにツリーを含むテーブルがあります。外部キーが同じテーブルにあるときにoracleでカスケード削除を追加する方法

MY_TABLE 
node_id 
parent_id 

ツリーのルートに親が存在しない場合、カスケード削除を追加するにはどうすればよいですか?

現在、親IDはルートとして-1に設定されています。私はこれをしようとすると、私は次のエラーを取得:

Error starting at line 1 in command: 
ALTER TABLE regional_defaults_working 
add CONSTRAINT regional_defaults_wk_delete 
    FOREIGN KEY (parent_id) 
    REFERENCES regional_defaults_working(node_id) 
    ON DELETE CASCADE 
Error report: 
SQL Error: ORA-02298: cannot validate (XVTEST.REGIONAL_DEFAULTS_WK_DELETE) - parent keys not found 
02298. 00000 - "cannot validate (%s.%s) - parent keys not found" 
*Cause: an alter table validating constraint failed because the table has 
      child records. 

答えて

4

これが仕事をしたりしません場合、私は思い出すことができないが、私の最初の衝動は、PARENT_ID = NULLをルートに設定されたと言うことです。

+0

確かに...投稿する前に私がそれを理解した直後に答えを投稿してください;) – testing123

1

これがわかりました。

キー(意図しない)は、parent_idをnullにしてからルートをnullにすることです。

関連する問題