網頁

2019/11/5

Oracle ORA-02291: integrity constraint (string.string) violated - parent key not found 錯誤原因

今天使用Spring Data JPA新增資料進PRODUCT資料表時出現錯誤Oracle ORA-02291 integrity constraint FK_PRODUCT_MEMBER_ID violated - parent key not found錯誤。

簡單來說問題是因為新增至外鍵(foreign key)的值在其參照的主鍵(primary key)資料表中找不到對應的值。


查了一下FK_PRODUCT_MEMBER_ID為資料表PRODUCT的外鍵限制(foreign key constraint)設定如下。

PRODUCT

CREATE TABLE PRODUCT (
  ID NUMBER(19) NOT NULL,
  MEMBER_ID NUMBER(19) NOT NULL, -- FK, references to MEMBER.ID
  ...
  CONSTRAINT FK_PRODUCT_MEMBER_ID FOREIGN KEY (MEMBER_ID) REFERENCES MEMBER (ID)
);

錯誤的原因是因為新增實體類(entity)ProductmemberId的值在MEMBERID並不存在該筆資料。

例如新增進PRODUCT.MEMBER_IDmemberId值為100,但MEMBER.ID並沒有100這筆資料,又因為外鍵限制導致Oracle ORA-02291錯誤。

解決方法就是如果資料表有外鍵限制,新增資料時確認資料必須存在所參照外鍵的該資料表中。

參考:

沒有留言:

張貼留言