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

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

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

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

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

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

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

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

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

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

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

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

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

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


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