一尘不染

违反-未找到父键02291。00000-“完整性约束

sql

嗨,我正在Oracle SQL开发人员中开发数据库,​​试图从另一个表访问foriegn键。我目前正在使用以下CREATE语句创建的ItemOrdered表

CREATE TABLE ItemOrdered(OrderID varchar2(9) REFERENCES Ords(OrderID),
BeltID varchar2(9) REFERENCES BeltID(BeltID), 
Quantity varchar(4) NOT NULL,
PRIMARY KEY(OrderID, BeltID))

如您所见,我具有以下前键Ords和BeltID。

现在,当我尝试运行以下语句时

INSERT INTO ItemOrdered VALUES(401565981,234489212,'2')

它给了我以下错误

违反-找不到父密钥02291。00000-“违反完整性约束(%s。%s)-找不到父密钥”

如果需要,我已经提供了Ords CREATE语句

  CREATE TABLE Ords(OrderID varchar2(9) PRIMARY KEY, 
CustomerID varchar(9) REFERENCES Customers(CustomerID), 
    Expected_Delivery_Date date DEFAULT sysdate NOT NULL, 
Actual_Delivery_Date date DEFAULT sysdate NOT NULL, 
    Payment_Due_Date date DEFAULT sysdate NOT NULL, 
Order_Date date DEFAULT sysdate NOT NULL, Price Varchar(10), 
    Order_Placed varchar2(1) CONSTRAINT OrderPlaced 
CHECK(Order_Placed IN('Y','N')) NOT NULL, 
Order_Confirmed varchar2(1)
    CONSTRAINT Order_Confirmed CHECK(Order_Confirmed IN('Y','N')) NOT NULL, 
Order_Completed varchar2(1) CONSTRAINT Order_Completed
    CHECK(Order_Completed IN('Y','N')) NOT NULL)

我还提供了我的BeltID CREATE语句

    CREATE TABLE BeltID(BeltID varchar2(9) PRIMARY KEY, 
BeltLengthID varchar2(9) REFERENCES BeltLength(BeltLengthID), 
    ColourID varchar2(9) REFERENCES Colour(ColourID), 
DesignID varchar2(9) REFERENCES Design(DesignID),ComponentID varchar2(9) REFERENCES Component(ComponentID))

我似乎不太明白为什么会出现此错误。为什么有明确的解释?

这是我正在尝试做的http链接。 连结文字


阅读 180

收藏
2021-03-08

共1个答案

一尘不染

由于您在创建表ItemOrdered时指定的外键约束,因此在执行此插入时:

INSERT INTO ItemOrdered VALUES(401565981,234489212,'2')

…值401565981和234489212必须分别对应于Ords和BelitId表中的键值-即这两个查询应返回行:

select *
from Ords
where OrderId = 401565981;

select *
from BeltId
where BeltId = 234489212;

错误消息表明情况并非如此。

2021-03-08