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

Liquibase + Postgresql + Spring Jpa:Проблем с автоматично нарастване на идентификатора

Инструкция на Liquibase autoIncrement="true" генерира serial колона за PostgreSQL. За serial колона PostgreSQL ще създаде последователност с име като tablename_colname_seq . Стойностите на колоните по подразбиране ще бъдат присвоени от тази последователност.

Но когато изрично вмъкнете стойност в серийна колона, това не засяга генератора на последователности и следващата му стойност няма да се промени. Така че може да генерира дублирана стойност, което е точно вашият случай.

За да предотвратите това, след като сте вмъкнали изрични стойности, трябва да промените текущата стойност на генератор на последователност или с ALTER SEQUENCE оператор или с setval() функция, напр.:

ALTER SEQUENCE tablename_colname_seq RESTART WITH 42;

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

Това трябва да реши проблема.



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

  2. Свързване с база данни PostgreSQL чрез SSH тунелиране в Python

  3. Агрегатна функция на Postgres за изчисляване на векторна средна скорост на вятъра (векторна величина) и посока на вятъра (векторна посока)

  4. Инсталирайте Postgres.app на Mac

  5. (Python) psycopg2 инсталация