|
Уникальный составной индекс. Обработка пустых полей.
|
|||
---|---|---|---|
#18+
Имеется уникальный составной индекс для трех полей: Числовое, Текстовое, Числовое При условии, что все три поля заполнены, проверка на уникальность работает корректно. Если Текстовое поле остается пустым, то проверка на уникальность не работает. Установка пропуска пустых полей в Свойствах индекса, ничего не дает. Смысловая нагрузка текстового поля состоит в присвоении признака первому полю, выглядит это так: 1 , , 1 1 , а, 1 1 , б, 1 2 , , 1 Текстовое поле, как правило, остается пустым и Access никак не реагирует на создание дублей: 1 , , 1 1 , , 1 Посоветуйте, пожалуйста, как справиться с этой проблемой. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2006, 20:30 |
|
Уникальный составной индекс. Обработка пустых полей.
|
|||
---|---|---|---|
#18+
starshinaЕсли Текстовое поле остается пустым, то проверка на уникальность не работает.А если числовые поля оставить пустыми (не 0, а именно NULL): 1,, 1,, или вообще так: ,,, ,,, в таких случаях у вас сработает проверка на уникальность? Скорее всего тоже нет. Уникальный индекс следит за уникальностью значений, а NULL - это отсутствие значения. Если вам такая картина не нравится, то тут, ИМХО, выход один - ставить признак "обязательное поле" (Required) в свойствах самого ПОЛЯ. Это решит вашу проблему, но чуток "сбоку" - поскольку приведет к тому, что такое ограничение вообще не допустит пустого значения в поле - ни в одной записи. Если поставить такие ограничения на каждое из ваших трех полей, то такой индекс фактически получится типа первичного ключа, который не допускает NULL'ов в ключевых полях. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2006, 21:40 |
|
Уникальный составной индекс. Обработка пустых полей.
|
|||
---|---|---|---|
#18+
KarfaqenА если числовые поля оставить пустыми (не 0, а именно NULL): 1,, 1,, или вообще так: ,,, ,,, в таких случаях у вас сработает проверка на уникальность? Нет, в перечисленных Вами вариантах проверка на уникальность не срабатывает. Проверка на уникальность перестает работать при наличии в одном или нескольких полях значения NULL. KarfaqenИМХО, выход один - ставить признак "обязательное поле" (Required) в свойствах самого ПОЛЯ. В моем случае это не выход. Все существующие NULL записи придется заменить на не несущее смысловой нагрузки значение... У меня есть другое плохое решение: объединить два поля. Текстовое, Числовое 1 , 1 1а, 1 1б, 1 Решение плохо нарушением сортировки. Для корректной сортировки в предложенном варианте придется вводить данные в следующем виде: 0000000001 , 1 0000000010 , 1 что так же неприемлемо... Вообще для меня удивительно, почему составной индекс на уникальность должен состоять только из обязательных полей. ИМХО это баг. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2006, 23:56 |
|
Уникальный составной индекс. Обработка пустых полей.
|
|||
---|---|---|---|
#18+
При создании индексов есть еще две возможности: · С помощью параметра DISALLOW NULL запретить значения Null в индексированных полях новых записей. · С помощью параметра IGNORE NULL запретить включение в индекс записей, имеющих значения Null в индексированных полях. Не уверен, что именно то, что вам нужно. Но на всякий случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2006, 00:17 |
|
Уникальный составной индекс. Обработка пустых полей.
|
|||
---|---|---|---|
#18+
Нашлось приемлемое решение. Необходимо создать еще одно поле, в котором будет объединяться информация из первого и второго поля. Новое поле будет включено в составной индекс вместо первого и второго поля. Выглядит это так. Было: 2 , , 1 2, а , 1 Стало: 2 , , 1 , 2 2 , а , 1 , 2а Последние два поля организуем в индекс тем самым исключая возможность внесения дублей. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2006, 18:53 |
|
Уникальный составной индекс. Обработка пустых полей.
|
|||
---|---|---|---|
#18+
starshinaНеобходимо создать еще одно поле, в котором будет объединяться информация из первого и второго поля. Новое поле будет включено в составной индекс вместо первого и второго поля. Возможен ли такой вариант? Я попробовал так сделать с вычисляемым полем. Оно в индекс не вставляется. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2018, 09:58 |
|
|
start [/forum/topic.php?fid=45&fpage=49&tid=1611389]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 284ms |
total: | 417ms |
0 / 0 |