insert on conflict 
If not existINSERT INTO table1
    (id)
SELECT 1
WHERE
   NOT EXISTS (
       SELECT 1
       FROM table1
       WHERE id = 1
    )
ON CONFLICT DO NOTHING

Конструкция ON CONFLICT не защищает от обращения к генератору ключа (sequence). И это может привести к тому, что счетчик будет крутиться впустую.
Использование выборки с условием не убирает полностью ложные срабатывания (если они проходя одновременно), но после вставки записи, обращения к генератору прекратятся.

PostgreSQL Antipatterns: накручиваем себе проблемы
https://habr.com/ru/companies/tensor/articles/507688/

Postgres: INSERT if does not exist already
https://stackoverflow.com/questions/4069718/postgres-insert-if-does-not-exist-already

   

Внутренние ссылки:

Дочерние страницы:
Обратные ссылки:

Теги: