ORA-01408: cette colonne liste déjà indexé
Oracle SQL Developer génère des instructions DDL de déjà existant tables de base de données (articles). C'est assez étrange que le DDL déclarations ne peuvent pas être appliquées à l'intérieur d'une nouvelle instance de base de données. Voici un exemple simplifié de la 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");
Si j'ai de l'exécution de ces instructions au sein d'une nouvelle instance oracle, j'obtiens l'erreur:
SQL-Fehler: ORA-01408: Diese Spaltenliste hat bereits einen Index
1. 00000 - "such column list already indexed"
Quelle est la raison de cette erreur?
La version de SQL Developer, et la base de données? La Version 4 ne semble pas faire cela, même si l'index est créé en premier et le PK est ajoutée plus tard avec un
QL-Développeur: Version 2.1.1.64 ET Oracle Database 11g Release 11.2.0.3.0 - 64bit de Production
J'avais pense fortement que c'est l'ancienne version de SQL Developer de ne pas être assez intelligent pour réaliser l'indice est inclus dans le PK alors. Si vous le pouvez, je vous suggère d'essayer une version plus récente et voir s'il se comporte correctement (4 semble mais est encore en version bêta). Vous pouvez également soulever à forum mais vous ne savez pas comment bien l'intérêt qu'il y aurait toujours dans la version 2...
alter table
. Vous ne savez pas si c'est un problème chez le client ou dans la version de base de données, mais je soupçonne que le client ne sont pas tout à fait assez intelligent.QL-Développeur: Version 2.1.1.64 ET Oracle Database 11g Release 11.2.0.3.0 - 64bit de Production
J'avais pense fortement que c'est l'ancienne version de SQL Developer de ne pas être assez intelligent pour réaliser l'indice est inclus dans le PK alors. Si vous le pouvez, je vous suggère d'essayer une version plus récente et voir s'il se comporte correctement (4 semble mais est encore en version bêta). Vous pouvez également soulever à forum mais vous ne savez pas comment bien l'intérêt qu'il y aurait toujours dans la version 2...
OriginalL'auteur My-Name-Is | 2013-12-10
Vous devez vous connecter pour publier un commentaire.
La partie:
est de générer un index. Contrainte de clé primaire ne peut pas exister sans un index. Toutefois, la partie:
génère pourtant, un autre indice avec les mêmes colonnes. C'est la raison de l'erreur. Assez étrange, cependant, que l'outil Oracle est la génération d'un mauvais script 🙂 Peut-être que c'est un bug.
OriginalL'auteur Alen Oblak
Votre contrainte de clé primaire dans l'instruction CREATE TABLE crée automatiquement un index unique sur ("A","B"), puisque c'est la CLÉ PRIMAIRE. L'erreur est alors soulevée, puisque vous essayez de re-créer déjà existant INDEX UNIQUE sur les mêmes colonnes.
Mise à JOUR: je l'ai testé avec Oracle SQL Developer 3.2.20.09 et le problème mentionné ci-dessus n'est pas présent. Vous êtes peut-être en utilisant l'ancienne version ?
OriginalL'auteur tvm