SQL ORA-02291: 违反完整性约束 - 未找到父键

Posted

技术标签:

【中文标题】SQL ORA-02291: 违反完整性约束 - 未找到父键【英文标题】:SQL ORA-02291: integrity constraint violated - parent key not found 【发布时间】:2020-07-19 18:50:53 【问题描述】:

我遇到了一些关于 SQL 外键的问题。

这是我的表并插入 SQL。



create table passenger_card2
(
    phone char(20) primary key,
    name char(20)
);

create table card
(
    card_num char(20) primary key,
    balance number(10,2),
    cvn char(20) 
);

create table passenger_card1
(
    sin integer primary key,
    user_id char(20) not null unique,
    phone char(20),
    card_num char(20) unique,
    foreign key(phone) references passenger_card2,
    foreign key (card_num) references card
);

这是我的INSERT 声明:

INSERT INTO PASSENGER_CARD2 VALUES ( '111222333' , 'Ace');
INSERT INTO CARD VALUES ( '1000' , '100.1' , '110');
INSERT INTO PASSENGER_CARD1 VALUES ('100', 'aaaa', '111222333', '1000');

但是,当我尝试插入 PASSENGER_CARD1 数据时出现错误:

SQL ORA-02291:违反完整性约束 - 未找到父键

我不知道为什么我的外键是错误的?

【问题讨论】:

工作正常。见demo 正如 Tejash 所说,它应该可以工作。删除所有内容并尝试以正确的顺序插入。 【参考方案1】:

我不确定这是否正确,但您应该先创建表 2,然后再创建第一个表。数据库很困惑,因为告诉他们第二个表中有外键但没有创建表是没有意义的。先运行第二个表的代码,再运行第一个表的代码。

【讨论】:

在我的 sql 语句中,表 1 在表 2 和表 3 之后...抱歉这种混淆。 删除表passenger_card2级联约束;丢弃表卡级联约束;删除表乘客卡1级联约束;创建表passenger_card2(电话char(20)主键,姓名char(20));创建表卡(card_num char(20) 主键,余额数(10,2),cvn char(20)) 创建表passenger_card1(sin整数主键,user_id char(20) not null unique,phone char(20),card_num char(20) unique,外键(phone)引用passenger_card2,外键( card_num) 引用卡片); 插入 PASSENGER_CARD2 值('111222333','Ace');插入卡片值('1000'、'100.1'、'110'); INSERT INTO PASSENGER_CARD1 VALUES ('100', 'aaaa', '111222333', '1000'); 现在运行所有这三个代码,因为它是一个脚本,它应该可以工作。如果它不起作用。让我知道。

以上是关于SQL ORA-02291: 违反完整性约束 - 未找到父键的主要内容,如果未能解决你的问题,请参考以下文章

ORA-02291: 违反完整性约束 (PRUEBA4.AUTO_MARCA_FK) - 未找到父键

ORA-02291: 违反完整约束条件 (*) - 未找到父项关键字

ORA-02291: 违反完整性约束 (OPS$P2417335.VOD_FILM_CLASS_FK) - 未找到父密钥

ORA-02291: 违反完整约束条件 - 未找到父项关键字

ORA-02291: 违反完整约束条件 (*) - 未找到父项关键字

ORA-02291: 完整性约束;找不到父键错误