Как дать уникальное ограничение комбинации столбцов в 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);
прежде всего, вы должны удалить существующее ограничение, используя ниже 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)