ORA-00001: 무결성 제약 조건(?)에 위배됩니다 unique constraint (?) violated

이 글에서는 UNIQUE 제약으로 발생하는 오류에 대해서 알아 보겠습니다.

조사 환경

이 글은 “Windows10 Pro에서 무상으로 이용가능한 Oracle Database Express Edition 18c 설치하기” 글에서 작성한 XEPDB1 플러그인 데이터베이스(PDB) 환경에서 조사했습니다.

scott/tiger접속을 위해서는 “연습 데이터용 샘플 스키마 “SCOTT” 작성하기” 글을 참조하십시오.

그외 이하 환경에서도 연습할 수 있습니다.

Windows Server 2012 R2에서 Oracle Database 12.2.0.1.0 for Microsoft Windows x64 설치 하기
Windows Server 2019 에서 Oracle Database 19c for Microsoft Windows x64 설치 하기

오류 샘플

다음과 같이 DEPTNO UNIQUE 제약이 걸려있는 이미 존재하는 데이터를 중복해서 삽입하는 경우 오류가 발생합니다.

SQL> select * from dept;
DEPTNO DNAME          LOC
------ -------------- -------------
    10 ACCOUNTING     NEW YORK
    20 RESEARCH       DALLAS
    30 SALES          CHICAGO
    40 OPERATIONS     BOSTON
SQL> 
col CONSTRAINT_NAME  format a15
col COLUMN_NAME format a12
SELECT CONSTRAINT_NAME, COLUMN_NAME FROM USER_CONS_COLUMNS WHERE TABLE_NAME = 'DEPT';

CONSTRAINT_NAME COLUMN_NAME
--------------- ------------
PK_DEPT         DEPTNO

한글 오류 메시지

C:\>set nls_lang=KOREAN_KOREA.KO16MSWIN949
C:\>sqlplus scott/tiger@localhost/xepdb1
SQL> insert into dept values (10, 'RD', 'SEOUL');
insert into dept values (10, 'RD', 'SEOUL')
*
1행에 오류:
ORA-00001: 무결성 제약 조건(SCOTT.PK_DEPT)에 위배됩니다

영문 오류 메시지

C:\>set nls_lang=American_America.AL32UTF8
C:\>sqlplus scott/tiger@localhost:1521/XEPDB1
SQL> insert into dept values (10, 'RD', 'SEOUL');
insert into dept values (10, 'RD', 'SEOUL')
*
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.PK_DEPT) violated

정상 샘플

다음과 같이 존재하지 않는 DEPTNO 50으로 삽입하면 UNIQUE 제약에 걸리지않고 정상 종료합니다.

SQL> insert into dept values (50, 'RD', 'SEOUL');
1 row created.
제목과 URL을 복사했습니다