이틀간 구글링 끝에 포기하고 여기 팁게와 질답게를 검색했으나
답변을 찾지 못했습니다. 결국 질문글을 올리게 되었네요.
제가 한 작업은 굉장히 단순한데요.
테이블A가 있습니다.
고객ID 컬럼과 관련 몇개 컬럼
ID | EDIT_ID | Photo |
---|---|---|
11112222 | 12345 | Blob |
11112223 | 12345 | Blob |
0. user_constraints 를 조회해 봤는데
PK는 없고 ID에 대해 CK만 Not Null 조건으로 걸려있었습니다.
(이게 PK가 없는 상태인지는 잘 모르겠습니다.)
1. 이 테이블A에 Type이라는 컬럼을 추가 했습니다.
TYPE Number(2) default 0 not null
2. PK를 복합키로 생성했습니다. (컬럼 생성 직후에 유니크 인덱스 생성도 했습니다.)
Alter Table TABLE_A Drop Primary Key; Alter Table TABLE_A Add Constraint TABLE_A_PK Primary Key(ID, TYPE);
3. User_Constraints, user_cons_columns 를 조회해 보니 PK 설정이 잘되어 있습니다. PK는 ID, TYPE 두개인 상태입니다.
4. TABLE_A의 내용은 아래 처럼 되었고
ID | EDIT_ID | Photo | Type |
---|---|---|---|
11112222 | 12345 | Blob | 0 |
11112223 | 12345 | Blob | 0 |
5. 존재하던 ID에 대해 Type 을 달리해서 새 레코드 입력을 시도했습니다.
ID | EDIT_ID | Photo | Type |
---|---|---|---|
11112222 | 2 |
- 무결성 제약 조건에 위배된다.. 고 에러 납니다.
- PK를 Disable 시키고 재시도 해봐도 동일한 에러가 납니다.
뭔가 제가 모르는 다른 얼개가 있는거 같습니다.
복합키로 PK를 재설정 했는데 이게 적용이 안되고 있는것 같습니다.
뭐가 문제일까요?
CREATE TABLE "XXX"."TABLE_A" ( "ID" VARCHAR2(8) NOT NULL ENABLE, "PHOTO" LONG RAW, "EDIT_ID" VARCHAR2(5), "WKDTE" DATE, "the_Type" NUMBER(2,0) DEFAULT 0 NOT NULL ENABLE, CONSTRAINT "TABLE_A_PK" PRIMARY KEY ("ID", "the_Type") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT ........
참고로 스키마를 뽑아보니 위와 같이 되어 있네요.