MySQL Question - Уникальный ключ, Не функционирующий правильно, или я неправильно понимаю?

Нет, это невозможно, потому что вы не имеете здесь дело с типами .

Вы пытаетесь сделать утверждения о содержании отдельных строк, поэтому вы делаете утверждения о экземплярах . Это не то, что подсказка типа может решить для вас.

14
задан Michael Haren 10 January 2009 в 04:42
поделиться

4 ответа

Это - Функция (хотя не, что я ожидал, любой).

Этот поток предлагает делать Ваш ключ Первичным ключом для получения поведения, которое Вы ожидали:

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

Уникальный индекс действительно гарантирует, что ненулевые значения уникальны; Вы могли указать, что Ваш столбец не принимает Нулевые значения.

17
ответ дан 1 December 2019 в 13:10
поделиться

Единственным путем я могу думать об обработке, это без дополнительных триггеров/программирования должно было бы иметь сингл "Ни одно из вышеупомянутого" значения в каждой из таблиц, на которые ссылаются, так, чтобы Ваш тест был похож

INSERT INTO test VALUES (1, NO_LOCATION, NO_WORKGROUP, NO_PROGRAM),
                        (1, NO_LOCATION, NO_WORKGROUP, NO_PROGRAM)

Где NO_* идентификаторы являются правильным типом/длиной для Ваших столбцов ID. Это затем перестало бы работать, поскольку Вы будете ожидать это.

3
ответ дан 1 December 2019 в 13:10
поделиться

В MySQL NULL! = ПУСТОЙ УКАЗАТЕЛЬ или что-либо. Таким образом, именно это не работает УНИКАЛЬНОЕ. Необходимо использовать другое значение по умолчанию для пробелов, как нуль

0
ответ дан 1 December 2019 в 13:10
поделиться

Я думаю, что важно отметить, что существует надлежащий путь к Нулевым значениям, которые будут интерпретированы и обработаны, и поведение, показанное OP, точно, что предназначается. Можно игнорировать то поведение, и можно обработать запрос любым путем, Вы хотите без возражения от меня, но это могло бы быть хорошо для "Принятия" ответа, который описывает некоторую форму Лучших практик, а не нестандартное персональное предпочтение.

Или если Вы не соглашаетесь с Лучшей практикой согласия, Вы не можете просто Принять ответ.

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

0
ответ дан 1 December 2019 в 13:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: