Sql 如何修复,ORA-02291:违反完整性常量-未找到父密钥
我正在使用apex oracle,而且我一直收到这种违规行为。如果有人能向我解释原因,我将不胜感激 我的代码: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)
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
的书籍插入表中-这就是外键背后的全部要点和想法-仅此而已允许插入有效、一致的数据。这是否回答了您的问题?感谢您的链接!不幸的是,它没有帮助。不过,谢谢您!