sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL automatisk stigning stiger ved hver opdatering

En sekvens vil blive forøget, hver gang en indsættelse forsøges, uanset om den lykkes. En simpel update (som i dit eksempel) vil ikke øge den, men en insert on conflict update vil siden insert er prøvet før update .

En løsning er at ændre id til bigint . En anden er ikke at bruge en sekvens og styre den selv. Og en anden er at lave en manuel 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)

Dette forudsætter title er unik.



  1. sequelize - Kan ikke tilføje en begrænsning af en fremmednøgle

  2. PostgreSQL vs MySQL, en sammenligning

  3. ERSTAT nyt linjetegn i MYSql virker ikke

  4. Jeg vil vise flere billeder fra databasen i jsp (jeg kortlægger servlet), så i jsp vil m vises i src af img tag