172 похожих чатов

Всем приветы снова нужна помощь. Странная штука. Есть таблица с

составным индексом.
Делаю:
SELECT indexname, indexdef FROM pg_indexes WHERE tablename = 'locality';
В ответе вижу:
locality_pkey | CREATE UNIQUE INDEX locality_pkey ON public.locality USING btree (id)
idx_e1d6b8e698260155 | CREATE INDEX idx_e1d6b8e698260155 ON public.locality USING btree (region_id)
idx_e1d6b8e6b08fa272 | CREATE INDEX idx_e1d6b8e6b08fa272 ON public.locality USING btree (district_id)
uniq_locality_in_district_and_in_region | CREATE UNIQUE INDEX uniq_locality_in_district_and_in_region ON public.locality USING btree (name, region_id, district_id)
Вот как раз последний индекс, который должен мешать.

Делаю несколько раз:
INSERT INTO public.locality
(region_id, district_id, "name")
VALUES(1612, null, 'Тестово');
Считываю и понимаю, что она реально кучу раз записалась:
common=# SELECT id, region_id, district_id, "name"
common-# FROM public.locality where name ilike '%тест%';
488 | 1612 | | Тестово
489 | 1612 | | Тестово
490 | 1612 | | Тестово
491 | 1612 | | Тестово
492 | 1612 | | Тестово
493 | 1612 | | Тестово


Почему нет ошибки по уникальному индексу?

17 ответов

10 просмотров

потому что NULL никогда не равен другому NULL

Alexander Kukushkin
потому что NULL никогда не равен другому NULL

Не знал, в мускуле равен. И как в данном случае решают проблему с PG?

IS NULL \ IS NOT NULL

Сергей Кравчук
почему ? а с NULL не будет ? )

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

🗡 𝓓𝒶𝓈𝓉𝒶𝓃𝒶𝓇𝓸𝓃
Не знал, в мускуле равен. И как в данном случае ре...

Правда? А вот это что: https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=3a7acf6cca0699895340d700ec908a3e ? ;) Такое поведение соответствует ISO SQL, между прочим. С виду, ни та, ни другая СУБД не нарушает... нет?

🗡 𝓓𝒶𝓈𝓉𝒶𝓃𝒶𝓇𝓸𝓃
с null не будет, потому что отсутствие поля. Не ож...

Это основы SQL, вообще-то. Т.е. стоит почитать какой-нибудь tutorial, в самом деле...

🗡 𝓓𝒶𝓈𝓉𝒶𝓃𝒶𝓇𝓸𝓃
с null не будет, потому что отсутствие поля. Не ож...

You can insert NULL values into columns with the UNIQUE constraint because NULL is the absence of a value, so it is never equal to other NULL values and not considered a duplicate value. This means that it's possible to insert rows that appear to be duplicates if one of the values is NULL .

Ega23 Egorov
You can insert NULL values into columns with the U...

Да я уже прочитал, спасибо!

Alexander Kukushkin
потому что NULL никогда не равен другому NULL

с чего это NULL не равен NULL ? И то и то пустые поля

Professor
с чего это NULL не равен NULL ? И то и то пустые п...

это не пустые поля это неопреденные поля

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
lazarus-3.2.0/gtk, linux патч "имя проекта по умолчанию project1 -> prj" день добрый не нравится "именя проекта по умолчанию" (project1), к.раз приходится переименовывать (н...
livontiy
5
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
Can I forward ports (including the SSH port) between two machines without SSH? I know I can forward SSH server port from machine A (which blocks all requests by firewall) to ...
required optional
5
Всем вечера. Подскажите как лучше сделать. делаю на Д10 Например будет база данных на SQLite. в ней будет много таблиц. более 50шт Типа справочник. Содержать ID Name Id p...
Андрей Т 🐎
10
А если для werf организовать отдельный репозиторий, а сервисы из проекта подключить как симлинки? И симлинки в гитигнор добавить?
Dmitriy Andreev
13
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Всем здравствуйте!) У меня такой вопрос. Есть два роута, роут1 и роут2. Они связаны с очередью some_queue. По задаче предполагается, что есть два паблиша. Паблиш1 отправляет...
Format
10
Карта сайта