programing

ORA-01408: 해당 열 목록은 이미 색인화되어 있습니다.

lastcode 2023. 9. 19. 21:12
반응형

ORA-01408: 해당 열 목록은 이미 색인화되어 있습니다.

Oracle SQL-Developer는 이미 존재하는 데이터베이스 테이블(항목)의 DDL 문을 생성합니다.생성된 DDL 문을 새 데이터베이스 인스턴스 내에 적용할 수 없다는 것은 매우 이상한 일입니다.다음은 DDL의 간단한 예입니다.

CREATE TABLE AB
  (
    "A"      NUMBER(*,0),
    "B"   NUMBER(*,0),
    "C" VARCHAR2(255 BYTE),
    CONSTRAINT "CHK_AB_A_NN" CHECK (A       IS NOT NULL) ENABLE,
    CONSTRAINT "CHK_AB_B_NN" CHECK (B       IS NOT NULL) ENABLE,
    CONSTRAINT "PK_AB" PRIMARY KEY ("A", "B")
  );
CREATE INDEX "IDX_AB_A" ON "AB"("A");
CREATE INDEX "IDX_AB_B" ON "AB"("B");
CREATE UNIQUE INDEX "PK_AB" ON "AB"("A", "B");

새 오라클 인스턴스 내에서 이러한 문을 실행하면 다음과 같은 오류가 발생합니다.

SQL-Fehler: ORA-01408: Diese Spaltenliste hat bereits einen Index 1. 00000 - "such column list already indexed"

이 오류의 원인은 무엇입니까?

파트:

CONSTRAINT "PK_AB" PRIMARY KEY ("A", "B")

인덱스를 생성하고 있습니다.인덱스가 없으면 기본 키 제약 조건이 존재할 수 없습니다.단, 부분:

CREATE UNIQUE INDEX "PK_AB" ON "AB"("A", "B");

는 동일한 열을 가진 또 다른 인덱스를 생성하고 있습니다.이것이 오류의 원인입니다.그런데 오라클 도구가 잘못된 스크립트를 생성하고 있다는 것이 꽤 이상합니다 :) 아마도 버그일 것입니다.

CREATE TABLE 문의 기본 키 제약 조건은 기본 키이기 때문에 ("A", B")에 고유 인덱스를 자동으로 만듭니다.그러면 같은 열에 이미 존재하는 유니크 인덱스를 다시 생성하려고 하면 오류가 발생합니다.

업데이트: Oracle SQL Developer 3.2.20.09와 함께 테스트해 보았는데 위에 언급된 문제는 없습니다.혹시 이전 버전을 사용하고 계십니까?

언급URL : https://stackoverflow.com/questions/20497613/ora-01408-such-column-list-already-indexed

반응형