2016-02-21 2 views
1

Возможно ли в MySQL создать два уникальных индекса вместе?Создайте два столбца с попарной уникальностью

Например, есть таблица, содержащая два идентификатора - идентификатор клиента и идентификатор продукта. Я хотел бы создать уникальность для пары только. Простыми словами, сочетание пользователя и продукта может присутствовать только один раз. Тот же пользователь с другими продуктами может присутствовать столько, сколько необходимо. И тот же продукт с другими пользователями может присутствовать столько, сколько необходимо. Но сама пара должна быть уникальной. Как?

Этот запрос имеет отношение OR. Я ищу отношение И.

ALTER TABLE top ADD CONSTRAINT unique_pair UNIQUE (uid, pid) 
+1

Посмотрите на это. Этого вы хотите достичь? http://stackoverflow.com/questions/21991367/using-group-of-columns-as-a-unique-key-in-mysql –

+0

Ваш синтаксис делает то, что вы хотите. –

+0

Кажется, что это не так. Если я вставляю одного и того же пользователя в другой продукт, он говорит UNIQUE и не будет вставлен в таблицу. – Dinly

ответ

1

Это делает то, что вы описали:

ALTER TABLE top ADD CONSTRAINT unq_top_unique_pair UNIQUE (uid, pid); 

Как делает:

CREATE UNIQUE INDEX unq_top_uid_pid ON TOP(uid, pid); 

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

+0

Кажется, что это не так. Если я вставляю одного и того же пользователя в другой продукт, он говорит UNIQUE и не будет вставлен в таблицу. – Dinly

+0

@Dinly. , , Тогда, возможно, у вас есть * другое ограничение * только на 'uid'. Каждое ограничение оценивается отдельно от других. –

Смежные вопросы