Tibero SQL Error [23000]: JDBC-10007:UNIQUE constraint violation

hyereen·2023년 1월 22일

이미 생성된 테이블에 새로운 데이터를 추가하려는데 나타난 에러이다.

에러 메세지

SQL Error [23000]: JDBC-10007:UNIQUE constraint violation ('데이터베이스명'.'테이블명'). 

해결 방법 1

새롭게 추가하려는 데이터에 기본키이면서 중복되는 값이 존재하기 때문이다.
중복된 데이터 확인 후, 이를 제거하여 다시 데이터를 삽입하면 에러가 뜨지 않을 것이다.
이때, 엑셀의 중복데이터 제거 기능을 이용하면 편하다.

해결 방법 2

다른 열을 기본키로 추가해서 기본키에 중복된 값이 사라진다면, PK를 추가하는 것이다. 이 때, PK를 변경해서 일어날 다른 상황들을 모두 고려해야 한다.
PK를 변경하려고 결정했다면, PK 삭제 -> PK에 추가할 컬럼의 NOT NULL 속성 추가 -> PK 재생성 과정이 필요하다.

-- /* 1. PK삭제 */
ALTER TABLE 테이블명 DROP CONTRAINT PK_테이블명

/* 2. PK에 추가할 컬럼의 NOT NULL 속성 추가 */
ALTER TABLE 테이블명 ALTER COLUMN 컬럼명 데이터타입 NOT NULL

/* 3. PK 재생성 (/
ALTER TABLE 테이블명 ADD CONSTRAINT PK_테이블명 PRIMARY KEY(컬럼1, 컬럼2, ...기본키가 될 컬럼들)

사실 근본적인 해결 방법인지는 잘 모르겠다. 그렇지만 중복된 데이터를 제거없이 모두 DB에 올리고 싶다면 이 방법이 유용할 것 같다.

0개의 댓글