首页 > 解决方案 > 试图有递归关系

问题描述

我使用 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

标签: oracle

解决方案


根据甲骨文文件

外键指定列中的值必须对应于引用的主键或唯一键列中的值,或者它们为 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

干杯!!


推荐阅读