ORA-00955 “le nom est déjà utilisé par un objet existant”
J'ai besoin de modifier un existant, PK. Donc je baisse un de le recréer.
ALTER TABLE B DROP CONSTRAINT PK_B;
ALTER TABLE B ADD CONSTRAINT PK_B PRIMARY KEY ("TYP", "NR", "HH", "QUART");
Malheureusement la dernière Instruction va me donner une erreur ORA-00955
Si je crée le PK contrainte comme il a été défini à l'origine avec:
ALTER TABLE B ADD CONSTRAINT PK_B PRIMARY KEY ("TYP", "NR", "HH");
tout fonctionne bien.
Vous devez vous connecter pour publier un commentaire.
Peut-être il y a un
INDEX
associés à laPRIMARY KEY CONSTRAINT
, et il est également nommé commePK_B
.Vous pouvez le vérifier que :
Si cela est vrai, alors :
Mise à jour : en ce qui Concerne
ALTER INDEX
déclaration, quelques points importants, comme mentionné par Justin dans les commentairesOracle crée implicitement un
UNIQUE
de l'indice à l'appui de laPRIMARY KEY CONSTRAINT
. Depuis, l'indice est le même nom que la clé primaire, et maintenant que la clé primaire est en cours de modification, il est mieux à supprimer et recréer l'index à nouveau conformément à la définition de la vieille clé primaire.Ma conclusion :
pour la clé primaire.
montrer que la non-unique, cependant, il sera effectivement un index unique.
Une bonne démonstration et très détaillées sur d'autres aspects aussi, par Arup : Les Clés Primaires De Garantir L'Unicité? Réfléchir À Nouveau.
J'ai eu le même problème lorsque j'ai eu à faire ce qui suit pour supprimer la référence à un tableau à partir de la vue tout en recréant la base de données à partir de l'éraflure. J'étais à la recherche pour les mêmes dans les tables et les index de la première.