¿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 único.

Ahora quiero eliminar la restricción única para la columna B y dar una restricción única combinando las columnas B, C y D. Por lo que 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?

Traté de dar la clave única compuesto como :

ALTER TABLE TABLENAME ADD CONSTRAINT CONSTRAINT_NAME UNIQUE (COLUMN_B, COLUMN_C, COLUMN_D)

Pero está verificando si alguna de las restricciones está presente en lugar de verificar la combinación de restricciones de clave única.

Author: rakeb.mazharul, 2013-06-27

3 answers

Crear una clave única en esas columnas

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

Oracle / PLSQL: Restricciones únicas

 42
Author: saamorim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-22 14:22:05

En primer lugar, debe eliminar una restricción existente utilizando a continuación ALTER Query.

ALTER TABLE table_name
   DROP CONSTRAINT myUniqueConstraint;

Ahora, puede crear una restricción UNIQUE usando la palabra clave UNIQUE 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í.

 6
Author: Naveen Kumar Alonekar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-20 06:50:26

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

CREAR UN ÍNDICE ÚNICO constraint_name EN table_name (B,C,D)

 0
Author: Sunil Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-14 06:09:22