¿Cómo dar una restricción única a una combinación de columnas en Oracle?

Resuelto Nigel Thomas asked hace 11 años • 3 respuestas

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.

Nigel Thomas avatar Jun 27 '13 19:06 Nigel Thomas
Aceptado

Crea una clave única en esas columnas.

ALTER TABLE YourTable
  add CONSTRAINT YourTable_unique UNIQUE (B, C, D);

Oracle/PLSQL: restricciones únicas

saamorim avatar Jun 27 '2013 12:06 saamorim

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í.

Naveen Kumar Alone avatar Jun 27 '2013 12:06 Naveen Kumar Alone

ALTER TABLE nombre_tabla DROP CONSTRAINT nombre_restricción;

CREAR ÍNDICE ÚNICO nombre_restricción EN nombre_tabla (B,C,D)

Sunil Kumar avatar May 14 '2015 06:05 Sunil Kumar