[Oracle] ora-02291 무결성 제약조건이 위배되었습니다- 부모 키가 없습니다

    [Oracle] ora-02291 무결성 제약조건이 위배되었습니다- 부모 키가 없습니다

    ORA-02291 오류는 외래 키 무결성 제약 조건을 위반하였을 때 발생합니다. 이 오류는 자식 테이블의 특정 열에 대한 외래 키 제약 조건이 존재하며, 이 열의 값이 부모 테이블의 기본 키 또는 후보 키와 일치하지 않을 때 발생합니다.

    해결방법

    • 오류가 발생한 자식 테이블에서 부모 테이블의 레코드를 참조하는 열 값을 확인합니다.
    • 해당 부모 테이블에서 해당 열 값을 가진 레코드가 존재하는지 확인합니다. 만약 존재하지 않는다면 부모 테이블에 레코드를 추가하거나 열 값을 수정해야 합니다.
    • 자식 테이블의 외래 키 열 값을 부모 테이블에서 해당하는 기본 키 또는 후보 키 값으로 수정합니다.

    INSERT INTO service_review_7(servicereviewidx,subject,CONTENT,serviceidx,useridx)  VALUES(500,'hihih','ufufuf',7,1)

    오류 보고 -

    SQL 오류: ORA-02291: integrity constraint (BONG.FK_SERV_REV_USERIDX_7) 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.

     

     

    원인: BONG이라는 이름의 DB의 FK_SERV_REV_USERIDX_7 제약조건에서 오류가 발생

    -> userIdx가 참조하는 테이블의 parent key 를 찾을 수 없다.

     

    나의경우,

    INSERT INTO service_review_7(servicereviewidx,subject,CONTENT,serviceidx,useridx)  VALUES(500,'hihih','ufufuf',7,1)

    이 쿼리를 실행하다가 오류가 났다.

     

    해결: 

    1. FK_SERV_REV_USERIDX_7 이 참조하는 테이블에 현재 실행한 쿼리의 값이 존재하는지 확인

    (예를들어, 현재 쿼리의 userIdx는 1 이라는 값을 실행하려고 하는데, 이 userIdx가 참조하는 테이블에도 1이라는 값이 있는지)

    2.  FK_SERV_REV_USERIDX_7가 참조하는 테이블에 해당 컬럼(userIdx)가있는지

    3.  FK_SERV_REV_USERIDX_7가 참조하는 테이블이 잘못 지정되어있지 않는지

     

    프로젝트 특성상, 멤버 관리를 효율적으로 하기 위해 테이블을 여러번 수정 하고서는

    수정해야할 제약조건 몇개가 누락되 이 오류가 발생했다.

     

     테이블 수정 시, 확인 해야할 것들! 

    1. mapper

    2. 테이블의 제약조건

    댓글

    Designed by JB FACTORY