Как дать уникальное ограничение комбинации столбцов в Oracle?

У меня есть таблица с 4 столбцами

каждый столбец будет A,B,C, D

столбец A является первичным ключом. Столбец B имеет уникальное имя ограничения.

теперь я хочу удалить уникальное ограничение для столбца B и дать уникальное ограничение, объединив столбцы B,C и D. Поэтому таблица позволит только одну строку с определенным значением в Столбцах B, C и D.

Как я могу дать такие ограничения?

Я попытался дать композит уникальный ключ, как:

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

но он проверяет, присутствует ли какое-либо из ограничений, а не проверяет комбинацию уникального ограничения ключа.

3 ответов


создайте уникальный ключ на этих столбцах

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

Oracle / PLSQL: уникальные ограничения


прежде всего, вы должны удалить существующее ограничение, используя ниже ALTER Query.

ALTER TABLE table_name
   DROP CONSTRAINT myUniqueConstraint;

Теперь, вы можете создать уникальный ограничение с помощью ключевого слова UNIQUE с комбинацией обязательных столбцов.

Например:

ALTER TABLE table_name
   ADD CONSTRAINT myUniqueConstraint UNIQUE(B, C, D);

подробное объяснение уникального ограничения здесь.


инструкции ALTER TABLE имя_таблицы удалить ограничение ограничение constraint_name;

создать уникальный индекс constraint_name на table_name (B, C, D)