2009-06-29 2 views
7

Я столкнулся с ситуацией, когда хочу убедиться, что составной элемент таблицы уникален. Например:Как я могу обеспечить сложную уникальность в MySQL?

Table (
    id char(36) primary key, 
    fieldA varChar(12) not null, 
    fieldB varChar(36) not null 
) 

Я не хочу и FieldB поля А быть составным первичным ключом, так как они часто меняются, и «идентификатор» используется в качестве ссылки во всей системе.

fieldA и fieldB не являются уникальными сами по себе, но их комбинации должны быть уникальными. Например, {{1, Matt, Jones}, {2, David, Jones}, {3, Matt, Smith}} будут действительными данными, но {{1, Matt, Jones}, {2, Matt, Jones }} не может быть.

ответ

7

Добавить уникальный ключ к вашему определению таблицы:

Table (
    id char(36) primary key, 
    fieldA varChar(12) not null, 
    fieldB varChar(36) not null, 
    UNIQUE fieldA_fieldB (fieldA, fieldB) 
) 
+0

мне просто нужно еще раз взглянуть на документацию, по всей видимости! Спасибо! –

11

Вы можете добавить уникальный ключ ограничения на двух полях:

ALTER TABLE `table_name` ADD UNIQUE (
`fieldA`, 
`fieldB` 
); 
1
ALTER Table ADD UNIQUE (fieldA, fieldB); 
Смежные вопросы