oracle中外键同表时如何添加级联删除

发布于 2024-10-31 02:40:50 字数 675 浏览 1 评论 0原文

我有一个表,其中包含 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.

I have a table that contains a tree in oracle.

MY_TABLE
node_id
parent_id

How do I add a cascade delete when the root of the tree is not going to have a parent?

Right now the parent id is set to -1 for the root. When I try this I get the following error:

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故事未完 2024-11-07 02:40:50

我不记得这是否有效,但我的第一反应是为根设置parent_id=NULL。

I can't recall if this will work or not, but my first impulse is to say set parent_id=NULL for the root.

硪扪都還晓 2024-11-07 02:40:50

想通了。

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

Figured it out.

The key (no pun intended) is to make your parent_id nullable and then set your root to be null.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文