Si queremos tener valores repetidos en una tabla, pero que las futuras inserciones se eviten duplicidades, se puede hacer uso de constraints tipo UNIQUE en estado ENABLE NOVALIDATE, es decir, donde los datos a insertar deben cumplir la restricción, pero pueden existir datos en la tabla que no lo hagan.
Este caso es un poco especial, ya que el comando habitual "... ENABLE NOVALIDATE" no funciona directamente, hay que crear el índice de tipo NORMAL previamente:
-- Ejemplo:Este caso es un poco especial, ya que el comando habitual "... ENABLE NOVALIDATE" no funciona directamente, hay que crear el índice de tipo NORMAL previamente:
-- Creamos la tabla PRU1 con valores duplicados
-- Creamos un índice "normal" sobre dicha tabla en los campos necesarios
CREATE INDEX PRU1_01_I ON PRU1(TABLE_NAME, OWNER);
-- Añadimos la constraint en estado "enable novalidate"
ALTER TABLE PRU1 ADD CONSTRAINT PRU1_01_I UNIQUE (TABLE_NAME, OWNER) ENABLE NOVALIDATE;
Así, no se podrán insertar valores repetidos en la tabla, pero se mantienen en la misma valores repetidos.