PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Liquibase + Postgresql + Spring Jpa :Id masalah kenaikan otomatis

Instruksi Liquibase autoIncrement="true" menghasilkan serial kolom untuk PostgreSQL. Untuk serial kolom PostgreSQL akan membuat urutan dengan nama seperti tablename_colname_seq . Nilai kolom default akan ditetapkan dari urutan ini.

Tetapi ketika Anda secara eksplisit masukkan nilai ke kolom serial, itu tidak mempengaruhi generator urutan, dan nilai berikutnya tidak akan berubah. Sehingga dapat menghasilkan nilai duplikat, yang persis seperti kasus Anda.

Untuk mencegah hal ini setelah Anda memasukkan nilai eksplisit, Anda perlu mengubah nilai saat ini dari generator urutan baik dengan ALTER SEQUENCE pernyataan atau dengan setval() fungsi, misalnya:

ALTER SEQUENCE tablename_colname_seq RESTART WITH 42;

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

Ini akan memperbaiki masalah.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Anda membuat Python / PostgreSQL lebih cepat?

  2. Status SQL:kesalahan sintaks 42601 pada atau dekat 11

  3. Buffer (Lingkaran) di PostGIS

  4. Bagaimana kita membangun tabel Normalized dari file teks DeNormalized satu?

  5. bagaimana cara memiliki filter Accent-insensitive di Django dengan postgres?