ORA-00001 : unique constraint (constraint_name) violated

에러 코드: ORA-00001

에러 메시지: unique constraint (constraint_name) violated

발생 원인

이 에러는 테이블에 유니크 제약 조건이 설정되어 있고, 이 제약 조건을 위배하는 데이터가 입력되려 할 때 발생합니다. 예를 들어, 사용자 아이디가 유니크해야 하는 테이블에 이미 존재하는 아이디를 다시 입력하려고 하면 이 에러가 발생하게 됩니다.

예제

고객 정보를 저장하는 테이블에서 고객의 이메일 주소에 유니크 제약 조건이 설정되어 있다고 가정해 봅시다.

CREATE TABLE customers (
    id NUMBER PRIMARY KEY,
    email VARCHAR(100) UNIQUE
);

-- 이미 'scott@naver.com' 이메일을 가진 고객이 존재하는 상태
INSERT INTO customers (id, email) VALUES (1, 'scott@naver.com');

-- 같은 이메일을 다시 추가하려고 할 때
INSERT INTO customers (id, email) VALUES (2, 'scott@naver.com');

 

위의 두 번째 INSERT 문을 실행하면 ORA-00001 에러가 발생하며, 오라클은 'unique constraint (SYS_C0010458) violated'와 같은 메시지를 표시할 것입니다. 여기서 SYS_C0010458은 제약 조건의 이름을 나타냅니다.

이 문제를 해결하기 위해서는 중복된 데이터를 입력하기 전에 데이터의 유니크 여부를 미리 검사하거나, 데이터를 삽입하는 로직을 수정해야 합니다. 예를 들어, 고객 이메일이 이미 존재하는지 확인하고, 존재하지 않을 경우에만 삽입하는 방식으로 로직을 변경할 수 있습니다.