2015-01-26 2 views
0

Я попытался сделать это в phpmyadmin sql: ALTER TABLE 'table' ADD UNIQUE ('field1', 'field2');, но он не сказал, что было дублирующее значение для поля1, что верно. То, что я хочу, является ограничением, которое не позволяет парам field1 и field2 сосуществовать в одной строке. Поле1 может иметь несколько экземпляров, оно имеет поле field2, но не одновременно. Как я могу это достичь?Уникальное ограничение на PAIR значений, myqs

EDIT:

Видимо проблема связана со значениями NULL в таблице ... кто-нибудь знает, как я могу избежать этого, сохраняя нулевые значения?

+0

Можете ли вы разместить DDL, используемый для создания таблицы? – llanato

+0

уникальными ограничениями являются условия 0/1. «следующие индексированные поля могут существовать вместе в записи AT MOST один раз». Вам нужно 0, что не может быть сделано с индексом. обычно это делается с ограничением, но mysql не поддерживает их. Вам нужно добавить кучу триггеров в вашу таблицу, чтобы поймать вставку/обновление и запретить сопоставляемые пары попасть в таблицу в первую очередь. –

+2

@MarcB: nitpicking: MySQL * does * поддерживает «ограничения» (внешний ключ, первичный ключ), но не ** проверяет ** ограничения. –

ответ

0

Для добавления уникального ключа на несколько столбцов, вы просто должны сделать это:

ALTER TABLE `table` ADD UNIQUE `unique_index`(`column1`, `column2`, `column3`); 

это то, что вы хотели?

+0

Это именно то, что сказал ОП, не работая, когда они пытались. –

+0

, если среди этих данных нет дубликата, странно, что он не работает –

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