PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Автоматичното увеличение на PostgreSQL се увеличава при всяка актуализация

Поредица ще бъде увеличена при всеки опит за вмъкване, независимо от успеха му. Проста 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 е уникален.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да актуализирате масив в PostgreSQL

  2. Устройството на Django се проваля, като се посочва DatabaseError:стойността е твърде дълга за тип символ варира (50)

  3. Ниво на изолация SERIALIZABLE в Spring-JDBC

  4. Оператори на Postgres за тип данни JSON с помощта на Rails 4

  5. CSV данни в postgreSQL с помощта на Python