¿Cómo dar una restricción única a una combinación de columnas en Oracle?
Tengo una tabla con 4 columnas.
Cada columna será A,B,C,D
La columna A es la clave principal. La columna B tiene una restricción de nombre única.
Ahora quiero eliminar la restricción única para la columna B y dar una restricción única combinando las columnas B, C y D. Entonces la tabla permitirá solo una fila con un valor particular en las columnas B, C y D.
¿Cómo puedo dar este tipo de restricción?
Intenté darle la clave única compuesta como:
ALTER TABLE TABLENAME ADD CONSTRAINT CONSTRAINT_NAME UNIQUE (COLUMN_B, COLUMN_C, COLUMN_D)
Pero se trata de comprobar si alguna de las restricciones está presente en lugar de comprobar la combinación de una restricción de clave única.
Crea una clave única en esas columnas.
ALTER TABLE YourTable
add CONSTRAINT YourTable_unique UNIQUE (B, C, D);
Oracle/PLSQL: restricciones únicas
En primer lugar, debe eliminar una restricción existente utilizando la siguiente consulta ALTER.
ALTER TABLE table_name
DROP CONSTRAINT myUniqueConstraint;
Ahora puede crear una restricción ÚNICA utilizando la palabra clave ÚNICA con la combinación de columnas requeridas.
Por ejemplo:
ALTER TABLE table_name
ADD CONSTRAINT myUniqueConstraint UNIQUE(B, C, D);
Explicación detallada de la restricción ÚNICA aquí.
ALTER TABLE nombre_tabla DROP CONSTRAINT nombre_restricción;
CREAR ÍNDICE ÚNICO nombre_restricción EN nombre_tabla (B,C,D)