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
'programing' 카테고리의 다른 글
IntelliJ와 로컬 MySQL을 연결하는 방법은? (0) | 2023.09.19 |
---|---|
MySQL 쿼리에서 세미콜론을 생략하는 것이 나쁜가요? (0) | 2023.09.19 |
java 코드를 사용하여 sp 값으로 텍스트 크기를 할당하는 방법 (0) | 2023.09.19 |
kvm: 모듈 확인 실패: 서명 및/또는 필요한 키 누락 - 커널 수정 (0) | 2023.09.19 |
XPath와 링크 텍스트로 링크 URL을 찾으려면 어떻게 해야 합니까? (0) | 2023.09.19 |