0

我在 SQL (Oracle DB) 中遇到 INSERTING 或 CONSTRAINT 问题。

我创建表 BOOKS(ID PK,TITLE,YEAR,PRICE,ID_AUTHOR FK,ID_PUBLISHER FK,ID_KIND FK),然后我尝试在该表中插入 18 行。正确添加了 9 行,但在第十行是此错误:

INSERT INTO KSIAZKA 
VALUES 
(10, 'Visual Basic .NET i platforma .NET', 2000, 70.00, 7, 3, 9)
错误报告:
SQL 错误:ORA-02291:违反完整性约束 (SYSTEM.ID_AUTOR) - 未找到父键
02291. 00000 - “违反完整性约束 (%s.%s) - 未找到父键”
*原因:外键值没有匹配的主键值。
*行动:删除外键或添加匹配的主键。

我尝试插入 10 个相同的行并正确添加了 9 个,但最后一个发生了错误。

我的问题是 - 为什么我只能插入 9 行?我能解决这个问题吗?

顺便提一句。我可以编写查询,让我知道表中的约束是正确的。

我正在使用 Oracle 11g Express Edition 和 SQL Developer。

4

2 回答 2

0

尝试使用显式 sintax(带有列名):

INSERT INTO KSIAZKA (column_name1,column_name2,column_name3...)
VALUES 
(10, 'Visual Basic .NET i platforma .NET', 2000, 70.00, 7, 3, 9)

我认为列顺序不正确。

于 2013-03-29T00:32:36.297 回答
0

这是问题所在:

 ADD CONSTRAINT ID_AUTOR FOREIGN KEY(ID) REFERENCES AUTOR (ID)

您的外键应该是 id_auto。像那样:

 ADD CONSTRAINT ID_AUTOR FOREIGN KEY(ID_AUTOR) REFERENCES AUTOR (ID)

问候!

于 2013-03-29T12:33:24.343 回答