2013-03-28 63 views
0

我在SQL(Oracle數據庫)中有INSERTING或CONSTRAINT問題。我創建表BOOKS(ID PK,TITLE,YEAR,PRICE,ID_AUTHOR FK,ID_PUBLISHER FK,ID_KIND FK),然後我嘗試在該表中插入18行。新增9行正常,但在第十是這樣的錯誤:在SQL中插入/約束(Oracle)

INSERT INTO KSIAZKA 
VALUES 
(10, 'Visual Basic .NET i platforma .NET', 2000, 70.00, 7, 3, 9) 
 
Error report: 
SQL Error: ORA-02291: integrity constraint (SYSTEM.ID_AUTOR) violated - parent key not found 
02291. 00000 - "integrity constraint (%s.%s) violated - parent key not found" 
*Cause: A foreign key value has no matching primary key value. 
*Action: Delete the foreign key or add a matching primary key.' 

我試圖插入10個相同的行和9正確添加,但最後一個錯誤發生。

我的問題是 - 爲什麼我只能插入9行?我該怎麼處理這個問題?

btw。我可以編寫查詢,這些查詢爲我提供了表中的約束是正確的。

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

+3

那麼錯誤說明了一切:你插入一行的值在參考表(作者)中沒有相應的PK值。順便說一句:你應該不***創建表作爲'SYSTEM'。不要這樣做,請創建一個常規用戶來處理。 –

+0

如果INSERT(id)中的第一個值是10或更多,則會出現錯誤。如果我在表BOOKS中插入值9或2或5作爲ID,那麼一切正常...... – llepec

+0

您可能已錯誤地設置了外鍵約束。向我們展示'KSIAZKA'表的設計。 –

回答

0

這裏的問題是:

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

你的外鍵應該是id_autor。像這樣:

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

問候!

+0

謝謝! 我在SQL Developer中通過嚮導創建表,我不知道表錯誤是什麼(外鍵)。 非常感謝! :) – llepec

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) 

我認爲列順序並不確定。

+0

不起作用...同樣的錯誤。 – llepec