oracle - 试图有递归关系
问题描述
我使用 oracle 并尝试建立递归关系
CREATE TABLE "EVENT"
(
"EVENT_ID" NUMBER(18) NOT NULL, //primary key
"NAME" VARCHAR(20) NULL,
"RELATED_EVENT_ID" NUMBER(18) NULL //foreign key
);
事件 1 父事件是事件 2....
当我尝试创建此表时,我收到此错误。
ALTER TABLE "EVENT"
ADD CONSTRAINT "FK_RELATED_EVENT_ID"
FOREIGN KEY ("RELATED_EVENT_ID") REFERENCES "EVENT" ("RELATED_EVENT_ID")
Error report -
SQL Error: ORA-02270: no matching unique or primary key for this column-list
02270. 00000 - "no matching unique or primary key for this column-list"
*Cause: A REFERENCES clause in a CREATE/ALTER TABLE statement
gives a column-list for which there is no matching unique or primary
key constraint in the referenced table.
*Action: Find the correct column names using the ALL_CONS_COLUMNS
catalog view
解决方案
根据甲骨文文件:
外键指定列中的值必须对应于引用的主键或唯一键列中的值,或者它们为 NULL。
在您的情况下,primary key
在列 ( EVENT_ID
) 上创建并在子句中使用它,reference
如下所示:
ALTER TABLE "EVENT"
ADD CONSTRAINT "FK_RELATED_EVENT_ID"
FOREIGN KEY ("RELATED_EVENT_ID")
REFERENCES "EVENT" ("EVENT_ID") -- this
现在,使用EVENT1记录中的EVENT2使EVENT2EVENT_ID
成为EVENT1的父级。RELATED_EVENT_ID
干杯!!
推荐阅读
- reactjs - 使用 useState 和 setInterval 反应 useEffect
- html - 如何在文本上使用 css 背景过滤器?
- javascript - 在 React 中,如何通过编写一个不导入任何文件的简单函数来添加复制到剪贴板功能?
- sql - 如何使用 Where 而不是 Group by?
- php - 为什么 POST 值在数据库中保存为空,但 var_dumps / echos 很好?
- java - spring boot rest api上的异步-注释应仅在服务上或控制器上
- java - 为什么具有 void 返回类型方法的功能接口接受任何返回类型方法?
- azure - Azure Function App 使用 java 中的 startCopy 将 blob 从一个容器复制到另一个容器
- python - Matplotlib 颜色栏不缩小
- c++ - 在 c++ 中正确使用 .find() 方法