Поредица ще бъде увеличена при всеки опит за вмъкване, независимо от успеха му. Проста update
(както във вашия пример) няма да го увеличи, а insert on conflict update
ще след insert
се пробва преди update
.
Едно решение е да промените id
към bigint
. Друг е да не използвате последователност и да я управлявате сами. И друго е да направите ръчно upsert:
with s as (
select id
from notifications
where title = 'something'
), i as (
insert into notifications (title, description)
select 'something', 'whatever'
where not exists (select 1 from s)
)
update notifications
set title = 'something else'
where id = (select id from s)
Това предполага title
е уникален.