ORA-00001: Unique constraint violated (violación de restricción única)
Oracle¿Qué significa?
Una fila que se inserta o actualiza viola una restricción UNIQUE o PRIMARY KEY. Es decir, el mismo valor ya existe.
¿Por qué ocurre?
Volver a insertar una fila con el mismo valor de clave, introducir datos duplicados en una columna que debe ser única o procesar el mismo registro dos veces durante la replicación o reejecuciones.
Cómo solucionarlo
Identifique la columna afectada a partir del nombre de la restricción en el mensaje de error: SELECT column_name FROM all_cons_columns WHERE constraint_name = 'CONSTRAINT_NAME'. Use GROUP BY ... HAVING COUNT(*) > 1 para encontrar datos duplicados. En la aplicación, use UPDATE o MERGE en lugar de INSERT para registros existentes. Si el valor de la secuencia se ha quedado atrás, avánzelo con ALTER SEQUENCE.
Más entradas de este motor
- ORA-00054Resource busy and acquire with NOWAIT specified or timeout expired (recurso ocupado; NOWAIT especificado o tiempo de espera agotado)
- ORA-00060Deadlock detected while waiting for resource (deadlock detectado al esperar un recurso)
- ORA-01017Invalid username/password; logon denied (usuario/contraseña no válidos; inicio de sesión denegado)
- ORA-01555Snapshot too old: rollback segment number too small (snapshot demasiado antiguo)