ORA-02291: ограничение целостности (OPS $ P2417335.VOD_FILM_CLASS_FK) нарушено - родительский ключ не найден - PullRequest
0 голосов
/ 24 января 2019

У меня проблема с вставкой значений в мою таблицу 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_classification. На момент вставки данных все таблицы были добавлены в правильном порядке.

Любая помощь по поводу того, почему я получаю эту ошибку, будет принята с благодарностью или, если мне потребуется предоставить дополнительную информацию, пожалуйста, сообщите мне.

С уважением,

Стивен.

1 Ответ

0 голосов
/ 24 января 2019

Я думаю, что сообщение довольно ясно.Ограничение:

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

Ошибка говорит о том, что вы добавляете значение dbClass (то есть 'U').Это значение отсутствует в vod_classification.dbClassId.

. Вы можете проверить, есть ли это значение:

select c.*
from vod_classification c
where c.dbClassId = 'U';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...