Een reeks wordt verhoogd wanneer een invoeging wordt geprobeerd, ongeacht het succes ervan. Een simpele update
(zoals in uw voorbeeld) zal het niet verhogen, maar een insert on conflict update
zal sinds de insert
wordt geprobeerd vóór de update
.
Een oplossing is om de id
. te wijzigen naar bigint
. Een andere is om geen reeks te gebruiken en deze zelf te beheren. En een andere is om een handmatige upsert te doen:
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)
Dit veronderstelt title
is uniek.