Как исправить уникальный ключ, чтобы запретить повторяющиеся записи - PullRequest
1 голос
/ 11 марта 2010

Вот моя проблема: Ключ "idx_SR_u_Identity_FingerPrintProfile" предназначен для ограничения полей "c_r_Fingerprint" и "c_r_Profile" уникальными.

Кажется, что я сделал что-то не так, потому что все 4 записи в таблице имеют одинаковые значения для этих двух полей. Это нормально, если две записи имеют один и тот же отпечаток пальца ИЛИ один и тот же профиль, но не ОБА.

Как правильно указать этот уникальный ключ, чтобы такие дубликаты не допускались?

alt text
(источник: Rigel222.Com )

1 Ответ

0 голосов
/ 11 марта 2010

Я думаю, что ваш ключ правильный, но MySQL не применяет его к NULL значениям. MySQL Docs для CREATE TABLE состояние:

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

Хотя записи типа (1,2) могут появляться только один раз, записи типа (1, NULL) могут встречаться несколько раз, но они не считаются дубликатами из-за NULL.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...