Как создать уникальный индекс в полях доступа с целыми числами, которые могут быть нулевыми? - PullRequest
2 голосов
/ 30 июля 2011

Я пытаюсь создать уникальный многостолбцовый индекс для таблицы в Access. Некоторые из полей, которые я буду использовать в индексе, являются длинными целыми числами. Эти поля могут быть пустыми в некоторых записях. Я знаю, что не могу допустить фактические значения NULL, потому что тогда у меня не может быть уникальных записей, например, если я попытаюсь построить таблицу следующим образом:

Field1 (text),Field2 (integer),Field3 (text)
1:"a",56,"c"
2:"x",NULL,"f"
3:"x",NULL,"f"

тогда будет разрешен ряд 3 (чего я не хочу), потому что значения NULL на самом деле не "равны" друг другу.

Я нашел решение, в котором они установили следующее в режиме конструктора:

"Required"="Yes"
"Allow Zero Length"="yes"
"Default value"=""

Но это не поможет, поскольку целые числа не могут быть установлены в "".

Итак, есть ли идеи по созданию уникального индекса в этих условиях?

1 Ответ

3 голосов
/ 30 июля 2011

Я хожу по общей теории БД, но Ацесс может сломать шаблон. Теория заставляет NULL отказываться делать так, как вы хотите, потому что БД принимают значение null, что по существу означает «разочароваться в оценке». Это оставляет вам значение по умолчанию, например, 0, -1 или минимальное значение int, но оставляет ложные, бессмысленные данные - очень плохая вещь.

Можете ли вы добавить суррогатное поле (скажем, строкового типа), заполненное строковым представлением целого числа? Не уверен насчет Access, но триггеры или вычисляемые столбцы - это две основные опции СУБД для этого.

...