sql >> Database >  >> RDS >> PostgreSQL

Liquibase + Postgresql + Spring Jpa:probleem met automatische verhoging van id

Liquibase's instructie autoIncrement="true" genereert serial kolom voor PostgreSQL. Voor serial kolom PostgreSQL maakt een reeks met een naam als tablename_colname_seq . Standaardkolomwaarden worden uit deze reeks toegewezen.

Maar wanneer u expliciet voeg een waarde in de seriële kolom in, dit heeft geen invloed op de sequentiegenerator en de volgende waarde zal niet veranderen. Het kan dus een dubbele waarde genereren, wat precies jouw geval is.

Om dit te voorkomen nadat u expliciete waarden heeft ingevoerd, moet u de huidige waarde van een sequentiegenerator wijzigen met ALTER SEQUENCE statement of met setval() functie, bijv.:

ALTER SEQUENCE tablename_colname_seq RESTART WITH 42;

SELECT setval('tablename_colname_seq', (SELECT max(colname) FROM tablename));

Dit zou het probleem moeten oplossen.



  1. EntityFramework 6 Alpha 2 &MySQL-connector/NET 6.6.4

  2. SQL Tabel vullen met willekeurige gegevens

  3. Postgresql-gegenereerde kolom mislukt bij het samenvoegen van niet-nulkolommen

  4. Is een PHP, Python, PostgreSQL-ontwerp geschikt voor een zakelijke toepassing?