我试图在Oracle 11g XE中html" target="_blank">执行存储包过程调用,但由于某些原因,我得到以下错误:
错误报告-ORA-02291:完整性约束(ROOT。SYS_C007057)违反-未找到父密钥ORA-06512:在"ROOT。BOOKS_STORE",第69行ORA-06512:第2行
02291. 00000 - "integrity constraint (%s.%s) violated - parent key not found"
*原因:外键值没有匹配的主键值。
*操作:删除外键或添加匹配的主键。
调用以下过程时:
begin
books_store.add_books_to_store(
'To Kill a Mockingbird', 21,
'test description', 5,
'https://test_img.jpg',
10, 6.99
);
end;
该过程所做的是将数据插入books
表中。以下是程序文本(位于books\u store
包内)和books
表的说明。
procedure add_books_to_store(
book_name books.name%type, book_author_id books.author_id%type,
book_description books.description%type default null,
book_publisher_id books.publisher_id%type, book_cover_img books.cover_img%type,
books_count books.available_count%type, book_price books.price%type)
is
existing_books_count integer;
add_negative_or_zero_books exception;
begin
if books_count <= 0 then
raise add_negative_or_zero_books;
end if;
select count(*) into existing_books_count from books
where
name = book_name and author_id = book_author_id and
description = book_description and publisher_id = book_publisher_id and
price = book_price;
if existing_books_count = 0 then
insert into books values (books_seq.nextval, book_name, book_description,
book_cover_img, books_count, book_author_id, book_publisher_id, book_price);
else
update books set available_count = available_count + books_count
where
name = book_name and author_id = book_author_id and
description = book_description and publisher_id = book_publisher_id and
price = book_price;
end if;
exception
when add_negative_or_zero_books then
raise_application_error(-10003, 'You cannot add 0 or less books');
end add_books_to_store;
书籍
描述:
DESC books;
Name Null? Type
------------------------------------------------------------
ID NOT NULL NUMBER(5)
NAME NOT NULL VARCHAR2(200)
DESCRIPTION VARCHAR2(2000)
COVER_IMG VARCHAR2(300)
AVAILABLE_COUNT NOT NULL NUMBER(4)
PRICE NUMBER(10,2)
AUTHOR_ID NUMBER(5)
PUBLISHER_ID NUMBER(5)
因此,错误表示我的主键或外键有问题。虽然,我不明白到底是什么错了。
我认为问题是我传递了错误的author_id
和publisher_id
作为过程的参数,但它们是正确的。下面是对作者
和发布者
表的Select*
调用:
select * from authors;
ID FIRST_NAME LAST_NAME BIRTHDAY
--------------------------------------------------
21 Harper Lee 28-APR-26
select * from publishers;
ID NAME
---------------------------
5 Penguin Fiction
你能帮我找出我的代码有什么问题以及如何使它工作吗?
我认为,问题可能在这里:
insert into books values (books_seq.nextval, book_name, book_description,
book_cover_img, books_count, book_author_id, book_publisher_id, book_price);
因为表中的“说明”列有另一个顺序:
PRICE NUMBER(10,2)
AUTHOR_ID NUMBER(5)
PUBLISHER_ID NUMBER(5)
尝试显式指定列名:
insert into books (ID, NAME, DESCRIPTION, COVER_IMG, AVAILABLE_COUNT, PRICE, AUTHOR_ID, PUBLISHER_ID)
values (books_seq.nextval, book_name, book_description,
book_cover_img, books_count, book_price, book_author_id, book_publisher_id);
现在看起来您正在将AUTHOR\u ID
值插入PRICE
列,PUBLISHER\u ID
插入AUTHOR\u ID
并将PRICE
插入PUBLISHER\u ID
。
我试图为和创建会话,这两个表都与相同的外键关联到登录表-但是当我为创建种子时,我得到了错误,在我的另一个问题在这个链接中,我没有以最好的方式解释,但得到了一些关于使用(党-角色-关系模型)和这段代码下面他更多的想法有关已解决的问题链接 创建表和主键 创建表和主键 创建表以及主键和外键 使用表为管理员创建会话的过程: 使用表为用户创建会话的过程: 创建管理会话时,我收到一个错误 我做错了什么?
问题内容: 嗨,我正在Oracle SQL开发人员中开发数据库,试图从另一个表访问foriegn键。我目前正在使用以下CREATE语句创建的ItemOrdered表 如您所见,我具有以下前键Ords和BeltID。 现在,当我尝试运行以下语句时 它给了我以下错误 违反-找不到父密钥02291。00000-“违反完整性约束(%s。%s)-找不到父密钥” 如果需要,我已经提供了Ords CREAT
我得到了“完整性约束(SYSTEM。FK_FACILITY)违反了父密钥未找到”错误,尽管主键在上一个表中已经明确定义。 我的确切错误是 我只想将值添加到表中,但我无法这样做。。。如果有人能帮我,那就太好了!
我遇到了一些SQL外键的问题。 下面是我的表和插入SQL。 SQL ORA-02291:违反完整性约束-未找到父键 我不知道为什么我的外键是错的?
将实体插入数据库时遇到问题。我正在使用HibernateJPA。 我有表提醒和提醒行动和每个提醒将保持当前状态的提醒行动(即。OneToOne)和交易结束每个提醒将有许多提醒操作(具有不同的状态)。 在saveOrUpdate期间,hibernate从DB获取提醒和提醒操作的顺序 但是在flush()期间,Hibernate尝试首先插入ReminderAction,并且由于ReminderActi
SQL数据库代码: 大家好!我做了一系列的桌子,我想我做的每件事都是正确的。除了位置表之外,我在所有表上输入了输入值,没有任何问题。 这就是给我的错误。 第1行错误:ORA-02291:违反完整性约束(ASSIGNMENT.FK_TENANT)-未找到父密钥。 任何帮助和提示将不胜感激。谢谢! 固定的