违反完整性约束 - 当值存在时找不到父键

问题描述 投票:0回答:1

我有桌子

Film
:

CREATE TABLE Film
(
    idFilm        NUMBER         GENERATED BY DEFAULT as IDENTITY (START WITH 1 INCREMENT BY 1) PRIMARY KEY,
    titre         VARCHAR2(100)  NOT NULL,
    anneeDeSortie NUMBER(4)      NOT NULL,
    langueOrigine VARCHAR2(25),
    duree         Number(3)      NOT NULL,
    resume        VARCHAR2(600)  NOT NULL,
    affiche       VARCHAR2(2083),
    realisateur   number,
    constraint fk_idRealisateur
        FOREIGN KEY (realisateur) REFERENCES Personnalite (idPersonnalite)
);

有以下行:

SELECT * FROM film where film.idfilm = 164184;

当我尝试向表中添加一行时

Scenariste

CREATE TABLE Scenariste
    (
    idScenariste  NUMBER GENERATED ALWAYS as IDENTITY (START WITH 1 INCREMENT BY 1) PRIMARY KEY,
    nom           VARCHAR2(100)  NOT NULL,
    idFilm        NUMBER         NOT NULL,
    constraint fk_idScenariste
        FOREIGN KEY (idScenariste) REFERENCES Film (idFilm)
);

INSERT INTO scenariste (nom, idFilm) VALUES ('Paul Attanasio', 164184);

我收到以下错误:

Error starting at line : 3 in command -
INSERT INTO scenariste (nom, idFilm) VALUES ('Paul Attanasio', 164184)
Error report -
ORA-02291: integrity constraint (EQUIPE106.FK_IDSCENARISTE) violated - parent key not found

我不明白为什么会发生这种情况,如果 id 为

164184
的电影行确实存在

sql oracle foreign-keys oracle-sqldeveloper
1个回答
0
投票

您使用错误的 FK 约束定义了表。

你有:

CREATE TABLE Scenariste
(
    idScenariste  NUMBER GENERATED ALWAYS as IDENTITY (START WITH 1 INCREMENT BY 1) PRIMARY KEY,
    nom           VARCHAR2(100)  NOT NULL,
    idFilm        NUMBER         NOT NULL,
    CONSTRAINT fk_idScenariste
        FOREIGN KEY (idScenariste) REFERENCES Film (idFilm)
);

但我相信 FK 约束应该使用

idFilm
(而不是
idScenariste
列):

    CONSTRAINT fk_idScenariste
        FOREIGN KEY (idFilm) REFERENCES Film (idFilm)
© www.soinside.com 2019 - 2024. All rights reserved.