2011-04-07 1 views
3

У меня есть таблица, содержащая дерево в оракуле.Как добавить каскадное удаление в оракуле, когда внешний ключ находится в одной таблице

MY_TABLE 
node_id 
parent_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

Выяснил это.

Ключ (не предназначенный для каламбур) должен сделать ваш родительский_Name равным null, а затем установить корень равным null.

 Смежные вопросы

  • Нет связанных вопросов^_^