반응형
ORA-02291 에러는 참조 무결성 제약 조건이 위반될 때 발생합니다.
이는 자식 테이블에 삽입하려는 외래 키 값이 부모 테이블에 존재하지 않을 경우에 발생합니다.
에러 원인
부모 테이블에 존재하지 않는 값을 자식 테이블의 외래 키로 삽입하려고 할 때 발생합니다.
이는 참조 무결성 제약 조건이 부모 테이블의 특정 값을 참조해야 하는 자식 테이블의 외래 키와 관련이 있습니다.
해결방법
1. 부모 테이블에 필요한 레코드를 삽입합니다.
자식 테이블에 값을 삽입하기 전에 부모 테이블에 해당 값이 존재하는지 확인하고, 존재하지 않는다면 부모 테이블에 해당 값을 먼저 삽입해야 합니다.
2. 자식 테이블의 외래 키 값을 올바르게 설정합니다.
부모 테이블에 존재하는 값으로 자식 테이블의 외래 키 값을 설정해야 합니다.
3. 잘못된 데이터를 수정합니다.
이미 입력된 잘못된 데이터를 찾아 수정하거나 삭제해야 합니다.
아래는 이 오류를 해결하기 위한 SQL 예제입니다:
-- 부모 테이블 생성
CREATE TABLE parent_table (
id NUMBER PRIMARY KEY,
name VARCHAR2(50)
);
-- 자식 테이블 생성
CREATE TABLE child_table (
id NUMBER PRIMARY KEY,
parent_id NUMBER,
CONSTRAINT fk_parent
FOREIGN KEY (parent_id)
REFERENCES parent_table(id)
);
-- 부모 테이블에 값 삽입
INSERT INTO parent_table (id, name) VALUES (1, 'Parent 1');
-- 자식 테이블에 올바른 외래 키 값 삽입
INSERT INTO child_table (id, parent_id) VALUES (1, 1);
-- 자식 테이블에 잘못된 외래 키 값 삽입 시도 (에러 발생)
INSERT INTO child_table (id, parent_id) VALUES (2, 99);
위 예제에서는 부모 테이블인 parent_table에 존재하지 않는 99 값을 자식 테이블인 child_table에 삽입하려고 할 때 ORA-02291 에러가 발생합니다. 이 오류를 해결하려면 부모 테이블에 99 값을 먼저 삽입해야 합니다.
간단 정리
1. 부모 테이블에 필요한 레코드가 존재하는지 확인합니다.
2. 자식 테이블의 외래 키 값을 부모 테이블의 유효한 값으로 설정합니다.
3. 잘못된 데이터를 찾아 수정하거나 삭제합니다.
반응형
'SW > Database' 카테고리의 다른 글
ORA-00003 / statement has been terminated / 원인과 해결 방법 (0) | 2024.09.02 |
---|---|
ORA-00002 / unique constraint (constraint_name) violated / 원인과 해결 방안 (0) | 2024.09.01 |
ORA-01034: ORACLE not available / 원인과 해결 방법 (0) | 2024.04.17 |
ORA-01422: Exact fetch returns more than requested number of rows / 원인과 해결 방법 (0) | 2024.04.08 |
ORA-00979: Not a Group By Expression / 원인과 해결방법 (0) | 2024.04.05 |