Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Уникальный составной индекс. Обработка пустых полей. / 7 сообщений из 7, страница 1 из 1
25.10.2006, 20:30
    #34081690
starshina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальный составной индекс. Обработка пустых полей.
Имеется уникальный составной индекс для трех полей:
Числовое, Текстовое, Числовое
При условии, что все три поля заполнены, проверка на уникальность работает корректно. Если Текстовое поле остается пустым, то проверка на уникальность не работает. Установка пропуска пустых полей в Свойствах индекса, ничего не дает.
Смысловая нагрузка текстового поля состоит в присвоении признака первому полю, выглядит это так:
1 , , 1
1 , а, 1
1 , б, 1
2 , , 1
Текстовое поле, как правило, остается пустым и Access никак не реагирует на создание дублей:
1 , , 1
1 , , 1

Посоветуйте, пожалуйста, как справиться с этой проблемой.
...
Рейтинг: 0 / 0
25.10.2006, 21:40
    #34081803
Karfaqen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальный составной индекс. Обработка пустых полей.
starshinaЕсли Текстовое поле остается пустым, то проверка на уникальность не работает.А если числовые поля оставить пустыми (не 0, а именно NULL):
1,,
1,,
или вообще так:
,,,
,,,
в таких случаях у вас сработает проверка на уникальность?

Скорее всего тоже нет. Уникальный индекс следит за уникальностью значений, а NULL - это отсутствие значения. Если вам такая картина не нравится, то тут, ИМХО, выход один - ставить признак "обязательное поле" (Required) в свойствах самого ПОЛЯ.

Это решит вашу проблему, но чуток "сбоку" - поскольку приведет к тому, что такое ограничение вообще не допустит пустого значения в поле - ни в одной записи. Если поставить такие ограничения на каждое из ваших трех полей, то такой индекс фактически получится типа первичного ключа, который не допускает NULL'ов в ключевых полях.
...
Рейтинг: 0 / 0
25.10.2006, 23:56
    #34081924
starshina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальный составной индекс. Обработка пустых полей.
KarfaqenА если числовые поля оставить пустыми (не 0, а именно NULL):
1,,
1,,
или вообще так:
,,,
,,,
в таких случаях у вас сработает проверка на уникальность?

Нет, в перечисленных Вами вариантах проверка на уникальность не срабатывает. Проверка на уникальность перестает работать при наличии в одном или нескольких полях значения NULL.

KarfaqenИМХО, выход один - ставить признак "обязательное поле" (Required) в свойствах самого ПОЛЯ.

В моем случае это не выход. Все существующие NULL записи придется заменить на не несущее смысловой нагрузки значение...

У меня есть другое плохое решение: объединить два поля.
Текстовое, Числовое
1 , 1
1а, 1
1б, 1

Решение плохо нарушением сортировки. Для корректной сортировки в предложенном варианте придется вводить данные в следующем виде:
0000000001 , 1
0000000010 , 1
что так же неприемлемо...

Вообще для меня удивительно, почему составной индекс на уникальность должен состоять только из обязательных полей. ИМХО это баг.
...
Рейтинг: 0 / 0
26.10.2006, 00:17
    #34081949
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальный составной индекс. Обработка пустых полей.
При создании индексов есть еще две возможности:
· С помощью параметра DISALLOW NULL запретить значения Null в индексированных полях новых записей.
· С помощью параметра IGNORE NULL запретить включение в индекс записей, имеющих значения Null в индексированных полях.

Не уверен, что именно то, что вам нужно. Но на всякий случай.
...
Рейтинг: 0 / 0
26.10.2006, 18:53
    #34085017
starshina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальный составной индекс. Обработка пустых полей.
Нашлось приемлемое решение.
Необходимо создать еще одно поле, в котором будет объединяться информация из первого и второго поля. Новое поле будет включено в составной индекс вместо первого и второго поля. Выглядит это так.
Было:
2 , , 1
2, а , 1

Стало:
2 , , 1 , 2
2 , а , 1 , 2а

Последние два поля организуем в индекс тем самым исключая возможность внесения дублей.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
05.06.2018, 09:58
    #39655375
iarapov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальный составной индекс. Обработка пустых полей.
starshinaНеобходимо создать еще одно поле, в котором будет объединяться информация из первого и второго поля. Новое поле будет включено в составной индекс вместо первого и второго поля.

Возможен ли такой вариант? Я попробовал так сделать с вычисляемым полем. Оно в индекс не вставляется.
...
Рейтинг: 0 / 0
05.06.2018, 10:22
    #39655393
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальный составной индекс. Обработка пустых полей.
iarapov , Речь идёт не о вычисляемом поле, а о статическом поле, значение которого вычисляется явно в момент вставки/обновления.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Уникальный составной индекс. Обработка пустых полей. / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]