j'avais une contrainte dans une tabletrouver contrainte fantôme à partir d'Oracle DB
CREATE TABLE "USERSAPPLICATIONS" (
"USERID" NUMBER NOT NULL ,
"APPLICATIONNAME" VARCHAR2 (30) NOT NULL ,
CONSTRAINT "PK_USERSAPPLICATIONS" PRIMARY KEY ("USERID","APPLICATIONNAME")
)
/
Il y a deux semaines j'ai modifié le tableau, ajouté quelques colonnes, la contrainte « supprimé PK_USERSAPPLICATIONS » et a ajouté une clé de substitution. Je peux voir dans Oracle SQL Developer que la contrainte PK_USERSAPPLICATIONS n'existe plus.
Indépendamment de cela, lorsque je tente d'ajouter deux entrées avec la même combinaison ID utilisateur/applicationName, je reçois une erreur
SQL Error: ORA-00001: unique constraint (ACCOUNTMP1.PK_USERSAPPLICATIONS) violated
00001. 00000 - "unique constraint (%s.%s) violated"
*Cause: An UPDATE or INSERT statement attempted to insert a duplicate key.
For Trusted Oracle configured in DBMS MAC mode, you may see
this message if a duplicate entry exists at a different level.
*Action: Either remove the unique restriction or do not insert the key.
Quand j'exécutez l'instruction
SELECT *
FROM user_cons_columns
WHERE constraint_name = 'PK_USERSAPPLICATIONS'
Je reçois aucune ligne . Comment cela peut-il être? Oracle ne devrait avoir aucune connaissance de la contrainte PK_USERSAPPLICATIONS car elle a été supprimée il y a déjà plusieurs semaines, et je ne la vois pas non plus dans la base de données.
+1. Spot sur. Je n'ai jamais pensé comme ça. – Guru
Très bonne et approfondie réponse. C'était ça - bêtement l'index a été nommé exactement comme la contrainte dans mon cas. – simon
Merci. Après avoir trouvé l'index, je l'abandonne en utilisant un autre script DROP INDEX PK_USERSAPPLICATIONS; – Coisox