que tenía una restricción en una tabla haceEncontrar restricción fantasma de la base de datos Oracle
CREATE TABLE "USERSAPPLICATIONS" (
"USERID" NUMBER NOT NULL ,
"APPLICATIONNAME" VARCHAR2 (30) NOT NULL ,
CONSTRAINT "PK_USERSAPPLICATIONS" PRIMARY KEY ("USERID","APPLICATIONNAME")
)
/
Dos semanas he modificado la tabla, añadí algunas columnas, eliminado los "PK_USERSAPPLICATIONS" restricción y ha añadido una clave sustituta. Puedo ver en Oracle SQL Developer que la restricción PK_USERSAPPLICATIONS ya no existe.
Independientemente de eso, cuando intento agregar dos entradas con la misma combinación usuario/applicationName, me sale un error
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.
Cuando ejecute la instrucción
SELECT *
FROM user_cons_columns
WHERE constraint_name = 'PK_USERSAPPLICATIONS'
consigo cero filas . ¿Como puede ser? Oracle no debería tener ningún conocimiento de la restricción PK_USERSAPPLICATIONS, ya que se ha eliminado hace unas semanas, y tampoco puedo verla en la base de datos.
+1. Spot on. Nunca pensé de esa manera. – Guru
Respuesta muy buena y completa. Eso fue todo - estúpidamente el índice fue nombrado exactamente como la restricción en mi caso. – simon
Gracias. Después de encontrar el índice, lo dejo usando otro script DROP INDEX PK_USERSAPPLICATIONS; – Coisox