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

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

Каждая колонка будет A, B, C, D

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

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

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

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

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

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

Ответ 2

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

ALTER TABLE table_name
   DROP CONSTRAINT myUniqueConstraint;

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

Например:

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

Подробное объяснение УНИКАЛЬНОГО ограничения здесь.

Ответ 3

ALTER TABLE имя_таблицы DROP CONSTRAINT имя_контакта;

CREATE UNIQUE INDEX constraint_name ON table_name (B, C, D)