3

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

2 に答える 2

4

これが機能するかどうかは思い出せませんが、最初の衝動は、ルートにparent_id=NULLを設定することです。

于 2011-04-07T23:51:29.973 に答える
1

理解した。

重要なのは(しゃれは意図されていません)、parent_idをnull可能にしてから、rootをnullに設定することです。

于 2011-04-07T23:51:45.310 に答える