当外键在同一个表上时,如何在oracle中添加级联删除

时间:2011-04-07 21:46:01

标签: sql oracle cascade sql-delete cascading-deletes

我有一个包含oracle树的表。

MY_TABLE
node_id
parent_id

当树的根目录不具有父级时,如何添加级联删除?

现在,根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.

2 个答案:

答案 0 :(得分:4)

我不记得这是否有效,但我的第一个冲动就是为root设置parent_id = NULL。

答案 1 :(得分:1)

想出来。

密钥(没有双关语)是让你的parent_id可以为空,然后将你的root设置为null。