Instrukce Liquibase autoIncrement="true"
generuje serial
sloupec pro PostgreSQL. Pro serial
sloupec PostgreSQL vytvoří sekvenci s názvem jako tablename_colname_seq
. Z této sekvence budou přiřazeny výchozí hodnoty sloupců.
Ale když explicitně vložte hodnotu do sériového sloupce, neovlivní to generátor sekvence a její další hodnota se nezmění. Může tedy vygenerovat duplicitní hodnotu, což je přesně váš případ.
Abyste tomu zabránili po vložení explicitních hodnot, musíte změnit aktuální hodnotu generátoru sekvencí buď pomocí ALTER SEQUENCE
nebo pomocí setval()
funkce, např.:
ALTER SEQUENCE tablename_colname_seq RESTART WITH 42;
SELECT setval('tablename_colname_seq', (SELECT max(colname) FROM tablename));
Tím by se měl problém vyřešit.