Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何修复,ORA-02291:违反完整性常量-未找到父密钥_Sql_Apex_Oracle Apex 5.1_Database Management - Fatal编程技术网

Sql 如何修复,ORA-02291:违反完整性常量-未找到父密钥

Sql 如何修复,ORA-02291:违反完整性常量-未找到父密钥,sql,apex,oracle-apex-5.1,database-management,Sql,Apex,Oracle Apex 5.1,Database Management,我正在使用apex oracle,而且我一直收到这种违规行为。如果有人能向我解释原因,我将不胜感激 我的代码: CREATE TABLE books ( book_id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, title VARCHAR(255) NOT NULL, total_pages INT NULL, rating DECIMAL(4, 2)

我正在使用apex oracle,而且我一直收到这种违规行为。如果有人能向我解释原因,我将不胜感激

我的代码:

CREATE TABLE books
(
    book_id        INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, 
    title          VARCHAR(255) NOT NULL, 
    total_pages    INT NULL, 
    rating         DECIMAL(4, 2) NULL, 
    isbn           VARCHAR(13) NULL, 
    published_date DATE NULL, 
    publisher_id   INT NULL, 

    PRIMARY KEY(book_id),
    CONSTRAINT fk_publisher 
        FOREIGN KEY(publisher_id) REFERENCES publisher(publisher_id)
);

CREATE TABLE authors
(
    author_id   INT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
    first_name  VARCHAR(100) NOT NULL, 
    middle_name VARCHAR(50) NULL, 
    last_name   VARCHAR(100) NULL,

    PRIMARY KEY(author_id)
);

CREATE TABLE publisher
(
    publisher_id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, 
    name         VARCHAR(255) NOT NULL,

    PRIMARY KEY(publisher_id)
)
我不断地发现这个错误:

ORA-02291:违反完整性约束(OANYANWU.FK_PUBLISHER)-未找到父密钥
ORA-06512:“SYS.DBMS_SQL”,第1721行

我要插入的内容:

insert into books (book_id, title, total_pages, rating, isbn, published_date, publisher_id)
values (2, 'Facing the Intelligence Explosion', 91, 3.87, null, '01-02-2013', 109);
旁注:我有一次成功插入,它是:

insert into books (book_id, title, total_pages, rating, isbn, published_date, publisher_id)
values (1, 'Lean Software Development: An Agile Toolkit', 240, 4.17, '9780320000000', '05-18-2003',5);

所以我不知道为什么会出现这个错误!?

这是您当前失败的插入:

插入图书(图书id、标题、总页数、评级、isbn、,
发布日期、发布者id)
值(2,‘面对情报爆炸’、91、3.87、空、,
'01-02-2013', 109);
只有id为
109
的发布者已存在于
publisher
表中时,此插入才会起作用。我猜它不存在,因此会出现错误。您可以通过以下查询验证这一点:

选择*
出版者
其中publisher_id=109;

如果此查询显示一个空的结果集,那么您就有了答案。

是的,当我将您的代码放入结果中时,没有找到数据?因此没有具有
publisher\u id=109
的出版商,因此您无法将具有该
publisher\u id
的书籍插入表中-这就是外键背后的全部要点和想法-仅此而已允许插入有效、一致的数据。这是否回答了您的问题?感谢您的链接!不幸的是,它没有帮助。不过,谢谢您!