ORA-02291: 무결성 제약조건이 위배되었습니다.부모 키가 없습니다.
에러 발생원인 및 해결방법
### Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-02291: 무결성 제약조건(DWB2B.FK_COL01)이 위배되었습니다- 부모 키가 없습니다. ### The error may involve kr.service.theshop.rt.insertReturn-Inline ### The error occurred while setting parameters ### SQL: insert into temp1019(COL01) values('2') ### Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-02291: 무결성 제약조건(DW.FK_COL01)이 위배되었습니다- 부모 키가 없습니다.
ORA-02291 에러 발생원인
쿼리에서 INSERT, UPDATE 시 무결성 제약조건에 따라 에러가 발생한 경우입니다.
부모테이블의 존재하지 않은 값을 자식테이블에 넣으려고 할떄 에러가 발생합니다.
ORA-02291 에러 해결방법
자식테이블에 넣으려고 하는 데이터가 부모테이블에 있는지 확인합니다.
case1. 자식테이블에 있는 데이터가 부모테이블에 없는 경우
-> 부모테이블에 자식테이블에 들어갈 데이터를 넣어줍니다.
case2. 자식테이블에 있는 데이터가 부모테이블에 있으면 안되는경우
-> 관계조건인 부모테이블과 자식테이블의 연결되어있는 외래키(Foreign Key)를 삭제합니다.
외래키 확인 방법
SELECT
CONSTRAINT_NAME
,CONSTRAINT_TYPE
, TABLE_NAME
,R_CONSTRAINT_NAME
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = '테이블명';
--예제
SELECT
CONSTRAINT_NAME
,CONSTRAINT_TYPE
, TABLE_NAME
,R_CONSTRAINT_NAME
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = 'TEMP1019';
외래키 삭제 방법
ALTER TABLE 테이블 DROP CONSTRAINT 외래키명;
ALTER TABLE TEMP1019 DROP CONSTRAINT FK_COL01;
'데이터베이스 > Oracle' 카테고리의 다른 글
[ORACLE] 오라클 ORA-00918 열의 정의가 애매합니다.(column ambiguously defined) 해결방법 (0) | 2020.07.16 |
---|---|
[ORACLE] 오라클 절대값(ABS 함수) 구하는방법 (0) | 2020.07.15 |
[ORACLE] 오라클 DROP TABLE 복구 처리 방법 (0) | 2020.07.04 |
[ORACLE] ORA-00904, ORA-00984 에러 해결 (0) | 2020.07.03 |
[ORACLE] 오라클 REPLACE 문자열 변환(엔터,특수문자) (0) | 2020.06.29 |