【问题标题】:How to add cascade delete in oracle when the foreign key is on the same table外键在同一张表时如何在oracle中添加级联删除
【发布时间】:2011-04-07 21:46:00
【问题描述】:

我有一个包含 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.

【问题讨论】:

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


    【解决方案1】:

    我不记得这是否可行,但我的第一个冲动是说为根设置 parent_id=NULL。

    【讨论】:

    • 哦,当然...在我弄清楚之后和发布之前立即发布答案;)
    【解决方案2】:

    想通了。

    关键(没有双关语)是让你的 parent_id 可以为空,然后将你的根设置为空。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-15
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多