PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Liquibase + Postgresql + Spring Jpa:Vấn đề tăng mã tự động

Hướng dẫn của Liquibase autoIncrement="true" tạo serial cột cho PostgreSQL. Đối với serial cột PostgreSQL sẽ tạo một chuỗi có tên như tablename_colname_seq . Giá trị cột mặc định sẽ được chỉ định từ trình tự này.

Nhưng khi bạn rõ ràng chèn một giá trị vào cột nối tiếp, nó không ảnh hưởng đến trình tạo chuỗi và giá trị tiếp theo của nó sẽ không thay đổi. Vì vậy, nó có thể tạo ra một giá trị trùng lặp, đó chính xác là trường hợp của bạn.

Để tránh điều này sau khi bạn chèn các giá trị rõ ràng, bạn cần thay đổi giá trị hiện tại của trình tạo trình tự bằng ALTER SEQUENCE câu lệnh hoặc với setval() chức năng, ví dụ:

ALTER SEQUENCE tablename_colname_seq RESTART WITH 42;

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

Điều này sẽ khắc phục sự cố.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để sử dụng cùng một danh sách hai lần trong mệnh đề WHERE?

  2. Nhóm postgresql theo cho nhiều dòng

  3. lỗi node-postgres $ 1 IS NULL

  4. Đọc số tiền trên bảng postgres

  5. Làm thế nào để trả về kết quả của một hàm postgresql trong c #? Đầu ra của bảng điều khiển trống