sql >> Database >  >> RDS >> PostgreSQL

Automatische verhogingen van PostgreSQL bij elke update

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.



  1. Geaggregeerde gegevenstabellen

  2. MySQL-opgeslagen procedures gebruiken ze of niet om ze te gebruiken

  3. Verbetering van de prestaties van ORDER BY op jsonb cross join met inner join group by

  4. Hoe kan ik een database neerzetten of maken van clojure.java.jdbc?