powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как сделать уникальный индекс при наличии Null
47 сообщений из 47, показаны все 2 страниц
Как сделать уникальный индекс при наличии Null
    #32194308
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Я создал уникальный индекс, из следующих полей:

Код: plaintext
1.
2.
3.
4.
ContainerId (Тип – Long,  обязательное поле)
CargoId (Тип – Long,  обязательное поле)
ParentId (Тип – Long,  допускается Null)
GeneralId (Тип – Long,  допускается Null)
DateOfLoad (Тип – Date, обязательное поле)


Я создал две строки и не получил сообщения о нарушении уникальности.
Как видите, одно поле содержат значения Null.


Код: plaintext
1.
2.
ContainerId	CargoId	GeneralId	  ParentId	DateOfLoad
 523 	              13 	 311 	     Null                 26 . 06 . 2003 
 523 	              13 	 311 	     Null	              26 . 06 . 2003 


А если я делаю так,


Код: plaintext
1.
2.
ContainerId	CargoId	GeneralId	  ParentId	DateOfLoad
 523 	              13 	 311 	      10 	              26 . 06 . 2003 
 523 	              13 	 311 	      10 	               26 . 06 . 2003 


То получаю сообщение о нарушении уникальности, что мне и нужно.


Что нужно сделать, чтобы обеспечить уникальность записей при отсутствии значения (Значение равно Null)в индексируемом поле? Или это невозможно в Access XP?
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194312
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажись это невозможно не в аксесе хп, а в принципе (в классической теории реляционных баз данных)
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194319
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Вот что написано в справке Access XP ( красным цветом я выделил то что не совсем понятно)

===============================================
Свойство «Пропуск пустых полей» (IgnoreNulls)
Свойство Пропуск пустых полей (IgnoreNulls) определяет, следует ли включать в индекс поля, содержащие пустые (Null) значения в индексированных полях.

Значение
Свойство Пропуск пустых полей (IgnoreNulls) может иметь следующие значения.

Значение Microsoft Visual Basic Описание
Да True Записи, содержащие пустые (Null) значения в индексированных полях, не включаются в индекс.
Нет False (Значение по умолчанию.) Записи, содержащие пустые (Null) значения в индексированных полях, включаются в индекс.

Значение данного свойства задается в окне индексов таблицы в режиме конструктора или в программе Microsoft Visual Basic.

Доступ к свойству индекса Пропуск пустых полей (IgnoreNulls) в программах Microsoft Visual Basic обеспечивает свойство IgnoreNulls объектов доступа к данным.

Заметки
Создание индекса для поля ускоряет выполнение поиска индексированных записей в этом поле таблицы. Если ожидается, что индексированное поле будет содержать много пустых (Null) значений, следует задать значение «Да» для свойства индекса Пропуск пустых полей (IgnoreNulls), тем самым уменьшив объем индекса.
===============================================


Как это понимать в классической теории реляционных баз данных?
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194321
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
И еще. Когда я портирую таблицы в MS SQL 2000, то получаю сообщение о дублировании записей. Получается что в MS SQL 2000 поля, содержащие Null успешно индексируются? Замечу, что я не знаток MS SQL 2000.
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194325
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пропуск пустых полей - это пропуск пустых полей. А уникальность - это уникальность. Не надо путать широкое с зеленым.
Пропуск пустых полей (да/нет) - просто указывает Jet'у, включать ли записи с Null в индекс (для ускорения выборки с условием Is Null), или нет (для уменьшения размера индекса).
Уникальность для поля, содержащего Null - как ты себе это представляешь? Если a = Null, b = Null, то (a=b)=Null, а никак не True. Поэтому никакие условия на уникальность не нарушаются. Нет у тебя в таблице записей, в которых индексированные поля совпадали бы с другой.
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194329
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Не совсем понятно, но верю.
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194333
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
А тогда такой вопрос:

Если я не могу иметь уникальный индекс, то я осуществляю дополнительную проверку.

Сейчас в событии формы BeforeUpdate я проверяю запросом наличие записи в базе данных. Если такой записи нет, то я вношу ее.

Поскольку программа работает в сети, то все таки,
как я понимаю, эти действия лучше делать в виде одной транзакции (проверка наличия записи, если нет то вставка записи)?

И соответственно не совсем правильно работать только в событии BeforeUpdate , не используя при этом транзакцию добавления записи?
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194341
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Короче, надо поменять IgnoreNulls с да на нет. Почему это нельзя считать ответом?
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194342
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
>Короче, надо поменять IgnoreNulls с да на нет. Почему это нельзя считать >ответом?

Я задал значение IgnoreNulls как "нет". Но это не помогает. Получается что Null не используется в индексе и прав Лох Позорный (спасибо ему за чувство юмора:)?
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194345
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Может, надо создать таблицу заново? Или всю базу...
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194349
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Создал базу, затем таблицу, затем индекс.
Не помогает. Значить не индексируются поля с Null.
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194354
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Может, это какой-то глобальный параметр в опциях... Не-не, это я сам с собой.
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194359
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в таблице уникальный индекс из полей поле1, поле2, поле3, то при вставке новой записи ( ЗаписьНовая ) должно ругаться на повторяющиеся значения тогда и только тогда, когда существует такая запись ( ЗаписьСтарая ), что
ЗаписьНовая.поле1=ЗаписьСтарая.поле1 И ЗаписьНовая.поле2=ЗаписьСтарая.поле2 И ЗаписьНовая.поле3=ЗаписьСтарая.поле3
Очевидно, что если хотя бы одно из полей в любой записи (новой или старой) есть Null, то условие не будет истинным ни при каких значениях остальных полей. Поэтому ругани на повторяющиеся значения быть и не должно.
Все. Ушел пить вотку.
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194360
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Лох, я не знаю, застал ли я тебя до пития или после, но по-твоему получается, что параметр IgnoreNulls никогда ни на что не влияет.
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194361
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повторяю, он влияет только на включение ссылок на записи (с нулом) в индекс. Или включаются (тогда быстрее ищет нуловые значения), или нет (тогда ищет медленнее, но индекс меньше места занимает). К проверке уникальности это не имеет никакого отношения.
Кстати, чего вы привязались к составному индексу? Сделайте обычный индекс (из одного поля), уникальный, но не обязательный. И добавляйте туда сколько хотите записей с пустым значением. Это так, для примера.
Все.
Ой мароз, мароооз.....
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194404
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не марось миняя
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194406
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Лох (слушай, а как тебя зовут?), это кончится тем, что я опять пришлю тебе ссылку на музыкальный форум...
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194409
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сан Саныч миня завут
Ниии маррроооосьь миняяяя
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194410
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Ниии маррроооосьь миняяяя
Ниии маррроооосьь миняяяя //подпевает вторым голосом... мля... подскажите хороший антидеприсант... а?
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194413
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 Лох:

Так это чего, мы с тобой рифмуемся???

2 Нуф:

А тебя как зовут?
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194414
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Харощий антидепресант - вотка. Толька сушняк вызывает (как и любой антидепресант)
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194415
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч, если не лениво, глянь мой имэйл - там и имя, и особая отметка через всю шею... Антидеприсант не подскажешь? Шобы без превыкания?
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194416
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, Лох, водка - плохо... Тааааакое превыкание вызывает! Кроме того, водка во время дипрессии - первый шаг к суициду, имхо... Таблетки есть какие-то... //вот автор топика обрадуется нашему задушевному разговору "на троих" :)
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194417
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВАЙ НУФ в гости приезжай да? Антидепресант - не самое главное в этой жизни
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194418
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох... Район страны (мира) та хоть какой? А то ты вообще "мембер" какой-та беспреютный... :) Луче ты приезжай - я дачу почти достроил, там кайф...
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194419
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> глянь мой имэйл - там и имя, и особая отметка через всю шею...

Имя вижу. Особую отметку - э... Ну ладно, я только имя хотел.

> Антидеприсант не подскажешь? Шобы без превыкания?

Я как человек непьющий (о, сейчас бить будут) могу предложить только одно - заняться каким-нибудь отвлекающим делом. Типа, выспаться. Или, наоборот, в форуме посидеть...
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194420
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, к суицыду не бывает первого шага. Бывает последний. Ты пиши если что. Или приезжай к нам в маскву.
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194421
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кста, Саныч... Это... ФАК уже ушел и дистурбить Админа, типа, поменяйте вот на эту версию - не красиво, имхо... Но знаешь, там кнопка есть "Добавить в уже существующий" - можно добавить позже...
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194422
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Кста, Саныч...

Вовочка меня зовут... Ладно, с факом разберемся как-нибудь.
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194423
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч.. там, если помню, написано ivanscar... можно разложить попробовать разложить на равные части: ivan + scar... Кажется ты мне про славарики тип скидывал? :)

Лох, это, извини кнешна, но Москва мне не очень... Хороший город, и все такое, но... у меня год назад друг уехал в москву (программер), а пол-года назад еще один друг (банковский работник)... Как они изменились млин :((( Москва людей (приезжих во всяком случае) меняет до неузноваемости, имхо, не в лучшую сторону...
На счет последнего шага это прав... Шаг - и Нирвана... прям как на даче - кайф... Кста, Лох, с дачи обалденный вид и на Бештау и на Машук...
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194424
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Словарики не помню. Имя вычленил. Вторая половина - могу только гадать. Если это фамилия, то она написана не на русском и не на иврите.
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194425
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Володь, ну млин ты уже спишь (кста, скока у вас там время сейчас?). Я ж написал: мой имэйл - там и имя, и особая отметка через всю шею ...
scar(англ. "шрам").
слюшайте... Чё нам cab скажет?
//открыл второе окно с чатом - вспомню молодость...
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194426
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Нуф-Нуф
Вай да прастит миня автор топика за офтопик
Я собираюсь во второй половине августа куда нибудь на кавказ
думаю пересечемся
З.Ы. Масква не сахар. Каждый становится таким говном, каким он и хочет быть (безотносительно к твоим друзям, а может и относительно)
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194427
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
:^))) Блин. У меня с английским хуже, чем с русским и ивритом. Позор мне.

У нас на один час меньше. Вот сейчас 00:13. А завтра рабочий день... (То есть разница у нас не только на один час, но и на одни сутки.) Я ушел спать.

Было приятно познакомиться. :^)
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194428
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох, надумаешь на кавказ - обязательно пересечемся! А говновые люди везде есть... просто москва меняет... Лана... это... Не будем мусорить? :)
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194429
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Спокойной ночи
Good night (во чего вспомнил)
לילה טוב
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194430
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Санычь... В смысле, Володь, мне тоже... Ночи...
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194451
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А теперь по топику. Лох оказался прав (впрочем, как всегда, когда он не пьет воТку). Нужный эффект недостижим.
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194452
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Что нужно читать, чтобы быть таким умным, как Лох?
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194453
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Что нужно читать или что нужно пить?
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194461
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Ну и читать и пить. Только что?
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194462
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А вот в такой постановке (более корректной, чем прежде) можно переадресовать вопрос Лоху.
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194464
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не читать надо, а делать. Я вот в детстве читал Три мушкетера, ну и что, стал я им? А ежлиб записался бы в кружок по фихтованию, сшил бы себе кофточку с крестиками, лошадку ежлиб прикупил Простое прочтение чего-бы та нибыло нифига не даст, если это все самостоятельно не попробывать... Ну то есть даст, но очень быстро все это забудется, если не попробовать... //тока проснулся... может че и не так сказал... :)
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194477
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поддерживаю кабана.
Я первую книжку по аксесу (Гетц) купил и начал читать около месяца назад, когда решил что это мне уже не повредит .
Так что читать надо хелп, пить надо... Во! пить нада меньше! Нада меньше пить! (но иногда пить надо больше)
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194501
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Все таки я построил нужный мне индекс, таким образом:

Я добавил в таблицу еще два поля:

Код: plaintext
1.
IndexParentId (Тип – Long,   0  - по умолчанию, обязательное)
IndexGeneralId (Тип – Long,   0  - по умолчанию, обязательное)


И включил эти поля в состав уникального индекса:

Код: plaintext
1.
2.
3.
4.
ContainerId (Тип – Long,  обязательное поле)
CargoId (Тип – Long,  обязательное поле)
IndexParentId (Тип – Long,   0  - по умолчанию, обязательное)
IndexGeneralId (Тип – Long,   0  - по умолчанию, обязательное)
DateOfLoad (Тип – Date, обязательное поле)


В эти новые поля соответственно копируются, отличные от Null, значения из

ParentId (Тип – Long, допускается Null)
GeneralId (Тип – Long, допускается Null)

Происходит небольшое дублирование информации, а что делать. Зато я имею ссылочную целостность в полях:

ParentId (Тип – Long, допускается Null)
GeneralId (Тип – Long, допускается Null)

что очень важно и одновременно уникальную индексацию.



Теперь Access не допустит появления одинаковых записей, подобных этим:

Код: plaintext
1.
2.
ContainerId CargoId GeneralId IndexGeneralId ParentId IndexParentId DateOfLoad 
 523 	       13 	    311 	      311                  Null              0           26 . 06 . 2003 
 523 	       13 	    311 	      311                  Null	       0           26 . 06 . 2003 
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194602
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Я вот в детстве читал Три мушкетера, ну и что, стал я им?

А разве Нуф-Нуф - это не один из трех мушкетеров? Вроде ведь один из трех...
...
Рейтинг: 0 / 0
Как сделать уникальный индекс при наличии Null
    #32194612
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да здравствуют три мушкетера ИК
Три кабана ИК
Три раза ИК
Ой марос марос ИК
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как сделать уникальный индекс при наличии Null
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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