2013-06-27 6 views
16

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

Каждый столбец будет А, В, С, D

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

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

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

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

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

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

+0

@Naveen Я дал ограничение, как вы сказали .. но мне кажется, что ограничение только проверяет, является ли одно из имен столбцов ... Я хочу, чтобы он был как новая строка, не будет разрешено вводить все три значения столбца, уже существующие в таблице. –

+1

hai @nigelthomas просмотреть эту ссылку http://stackoverflow.com/questions/1109614/how-can-i-create-a-sql-unique-constraint-based-on-2-columns –

ответ

33

Создать уникальный ключ на этих колонках

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

Oracle/PLSQL: Unique Constraints

+0

Что такое соглашение об именах? Что делать, если в таблице есть два несвязанных уникальных значения? Тогда «YourTable_unique» будет с тем же именем. –

+0

@PhilipRego, вы правы в своем комментарии. Соглашение об именах зависит от команды, компании и пользователя. Это просто пример. – saamorim

5

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

ALTER TABLE table_name 
    DROP CONSTRAINT myUniqueConstraint; 

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

Для примера:

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

Detailed explanation of UNIQUE Constraint here.

+0

http://stackoverflow.com/questions/1109614/how-can-i-create-a-sql-unique-constraint-based-on-2-columns –

0

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

CREATE UNIQUE INDEX constraint_name НА table_name (B, C, D)