반응형
ORA-02292: integrity constraint violated - child record found / 원인과 해결 방법
ORA-02292 오류는 부모 테이블의 행을 삭제하거나 업데이트하려고 할 때 해당 행에 참조하는 자식 테이블의 데이터가 존재할 경우 발생합니다.
ORA-02292 오류 설명
이 오류는 외래 키 제약 조건이 설정된 테이블 간 관계에서 데이터 무결성을 유지하기 위해 발생합니다. 참조 무결성 규칙을 위반하려는 작업을 방지하는 역할을 합니다.
오류 원인
ORA-02292 오류가 발생하는 주요 원인은 다음과 같습니다:
- 자식 테이블에 종속된 데이터가 존재: 부모 테이블의 행을 삭제하려는 경우.
- 외래 키 제약 조건 미준수: 업데이트가 참조 무결성을 깨뜨리는 경우.
해결 방법 및 명령어 예시
ORA-02292 오류를 해결하려면 다음 방법을 시도하세요:
1. 자식 테이블 데이터 확인
참조 무결성을 위반하는 데이터를 확인하려면 다음 쿼리를 실행합니다:
SELECT *
FROM child_table
WHERE foreign_key_column = 'value';
예시 결과:
CHILD_ID FOREIGN_KEY_COLUMN
--------- ------------------
101 1001
102 1001
2. 자식 데이터 삭제
부모 테이블 행을 삭제하기 전에 자식 데이터를 먼저 삭제해야 합니다:
DELETE FROM child_table
WHERE foreign_key_column = 'value';
3. CASCADE 옵션 사용
외래 키 제약 조건을 CASCADE로 설정하면 부모 데이터를 삭제할 때 자식 데이터도 자동으로 삭제됩니다:
ALTER TABLE child_table
ADD CONSTRAINT fk_name FOREIGN KEY (foreign_key_column)
REFERENCES parent_table (primary_key_column)
ON DELETE CASCADE;
4. 제약 조건 무효화
임시로 제약 조건을 비활성화할 수도 있습니다. 하지만 이 방법은 추천되지 않습니다:
ALTER TABLE child_table DISABLE CONSTRAINT fk_name;
간단 요약
- ORA-02292 오류는 자식 테이블 데이터가 부모 데이터를 참조하고 있을 때 발생합니다.
- 해결 방법: 자식 데이터 삭제, CASCADE 설정, 또는 제약 조건 무효화.
반응형
'SW > Database' 카테고리의 다른 글
ORA-00933: SQL command not properly ended / 원인과 해결 방법 (1) | 2024.12.04 |
---|---|
ORA-06550: line n, column m: PLS-00103: Encountered the symbol ... / 원인과 해결 방법 (2) | 2024.12.03 |
ORA-00904: Invalid Identifier / 원인과 해결 방법 (0) | 2024.12.02 |
ORA-01722: Invalid Number / 원인과 해결 방법 (0) | 2024.12.02 |
ORA-00054: Resource Busy and Acquire with NOWAIT Specified / 원인과 해결 방법 (0) | 2024.12.01 |