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 ответов

27 просмотров

потому что 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 ? И то и то пустые п...

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта