当前位置: 首页 > 知识库问答 >
问题:

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

阚原
2023-03-14

我在向vod_film表中插入值时遇到问题。各表如下:

CREATE TABLE vod_classification (
dbClassId       CHAR(3) NOT NULL,
dbDescription       VARCHAR2(150),
CONSTRAINT vod_classification_PK PRIMARY KEY (dbClassId)
);

CREATE TABLE vod_film (
dbFilmId          NUMBER(4) NOT NULL,
dbTitle           VARCHAR2(100) NOT NULL,
dbDirector_firstname  VARCHAR2(50) NOT NULL,
dbDirector_lastname   VARCHAR2(50) NOT NULL,
dbGenre               VARCHAR2(20),
dbUK_release_date     DATE,
dbFilename            VARCHAR2(50),
dbRuntime         NUMBER(4),
dbClass               CHAR(3),
CONSTRAINT vod_film_PK PRIMARY KEY (dbFilmId),
CONSTRAINT vod_film_class_FK FOREIGN KEY (dbClass) REFERENCES vod_classification (dbClassId)
ON DELETE SET NULL
);

CREATE TABLE vod_actor (
dbActorId      CHAR(4) NOT NULL,
dbFirstname    VARCHAR2(50) NOT NULL,
dbLastname     VARCHAR2(50) NOT NULL,
dbDateOfBirth  DATE,
dbNationality  VARCHAR2(30),
dbBiography    CLOB,
CONSTRAINT vod_actor_PK PRIMARY KEY (dbActorId)
);

CREATE TABLE vod_role (
dbFilmId           NUMBER(4) NOT NULL,
dbActorId          CHAR(4) NOT NULL,
dbCharacterName    VARCHAR2(25) NOT NULL,
dbFirstAppearance  NUMBER(6),
dbDescription      CLOB,
CONSTRAINT vod_role_PK PRIMARY KEY (dbFilmId, dbActorId, dbCharacterName),
CONSTRAINT vod_role_film_FK FOREIGN KEY (dbFilmId) REFERENCES vod_film (dbFilmId)
ON DELETE CASCADE,
CONSTRAINT vod_role_actor_FK FOREIGN KEY (dbActorId) REFERENCES vod_actor (dbActorId)
ON DELETE CASCADE
);

当我运行以下代码时:

INSERT INTO vod_film (dbFilmId, dbTitle, dbDirector_firstname, dbDirector_lastname, dbGenre, dbUK_release_date, dbFilename, dbRuntime, dbClass)
VALUES (1, 'Toy Story 3', 'lee', 'unkrich', 'Comedy', '19-JUL-2010', 'ToyStory3.mpg', 103, 'U');

我有这个错误返回:

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

我不确定为什么会返回此错误,因为外键引用了vod_分类中的现有字段。在插入数据时,所有表格都已按我认为正确的顺序添加。

任何关于我为什么会收到这个错误的帮助都将不胜感激,或者如果我需要提供任何进一步的信息,请告诉我。

祝好

史提芬。

共有1个答案

慕翰学
2023-03-14

我认为信息非常清楚。约束条件是:

CONSTRAINT vod_film_class_FK FOREIGN KEY (dbClass)
    REFERENCES vod_classification (dbClassId)
    ON DELETE SET NULL

错误表示您正在添加dbClass(即“U”)。此值不在vod\u分类中。dbClassId

您可以检查该值是否存在:

select c.*
from vod_classification c
where c.dbClassId = 'U';
 类似资料:
  • 我尝试按如下方式创建父表和子表: 我创建了两个程序来插入记录: 我已经创建了SSIS包来调用这两个过程。父记录插入成功。但是对于子表过程,我得到以下错误: “[Execute SQL Task]错误:执行查询”BEGIN GetSourceLogId(?,?输出);终止失败,出现以下错误:“违反了ORA-02291:完整性约束(PATIENTMDR.FK_SOURCELOG_PROCESSLOG)

  • 所以这里是我的数据库: 插入表格: 批次表不断出现的错误是:ORA-02290:违反了检查约束(EJAY.batches\u DATE\u CHK) 学生表出现的错误是:ORA-02291:违反完整性约束-未找到父键 我感到困惑的是,它只显示在表格中的一些行。教职员工和课程都很好,只有这两个。如果答案很明显,我道歉,我是初学者。请帮帮忙

  • 当我创建表时,我将作为主键,将作为外键从同一个表中创建,作为dep表中的外键,当我想插入显示的值时,现在我感到困惑。 该表包含以下内容: 我第一次使用以下命令行: 然后我尝试不使用,如下所示:

  • 我试图为和创建会话,这两个表都与相同的外键关联到登录表-但是当我为创建种子时,我得到了错误,在我的另一个问题在这个链接中,我没有以最好的方式解释,但得到了一些关于使用(党-角色-关系模型)和这段代码下面他更多的想法有关已解决的问题链接 创建表和主键 创建表和主键 创建表以及主键和外键 使用表为管理员创建会话的过程: 使用表为用户创建会话的过程: 创建管理会话时,我收到一个错误 我做错了什么?

  • 当我做插入它给我这个错误: ORA-02291:违反完整性约束(H00300581.FK_类)-未找到父密钥 对于注册表中的所有插入,都会发生此错误。我需要帮忙,请帮我修一下。 是否来自表中的外键?可能是因为我什么都试过了,但都没用。 创建表 创建序列 培训师数据 类数据 成员数据 注册资料

  • 我遇到了一些SQL外键的问题。 下面是我的表和插入SQL。 SQL ORA-02291:违反完整性约束-未找到父键 我不知道为什么我的外键是错的?