El mensaje de error incluirá el nombre de la restricción que se violó (puede haber más de una restricción única en una tabla). Puede usar ese nombre de restricción para identificar la(s) columna(s) en las que se declara la restricción única
SELECT column_name, position
FROM all_cons_columns
WHERE constraint_name = <<name of constraint from the error message>>
AND owner = <<owner of the table>>
AND table_name = <<name of the table>>
Una vez que sepa qué columna(s) está(n) afectada(s), puede comparar los datos que está tratando de INSERT
o UPDATE
contra los datos que ya están en la tabla para determinar por qué se está violando la restricción.