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

Tạo chuỗi PostgreSQL cho một trường (không phải là ID của bản ghi)

Sử dụng CREATE SEQUENCE :

CREATE SEQUENCE scores_job_id_seq;  -- = default name for plain a serial

Sau đó, thêm một cột mặc định vào scores.job_id :

ALTER TABLE scores ALTER COLUMN job_id SET DEFAULT nextval('scores_job_id_seq');

Nếu bạn muốn ràng buộc trình tự đến cột (vì vậy nó sẽ bị xóa khi cột bị xóa), cũng chạy:

ALTER SEQUENCE scores_job_id_seq OWNED BY scores.job_id;

Tất cả điều này có thể được thay thế bằng cách sử dụng kiểu dữ liệu giả serial cho cột job_id bắt đầu bằng:

  • Đổi tên một cách an toàn và rõ ràng các bảng sử dụng các cột khóa chính nối tiếp trong Postgres?

Nếu bảng của bạn đã có hàng, bạn có thể muốn đặt SEQUENCE đến giá trị cao nhất tiếp theo và điền vào các giá trị nối tiếp còn thiếu trong bảng:

SELECT setval('scores_job_id_seq', COALESCE(max(job_id), 1)) FROM scores;

Tùy chọn:

UPDATE scores
SET    job_id = nextval('scores_job_id_seq')
WHERE  job_id IS NULL;
  • Cách kiểm tra một chuỗi hiệu quả để tìm các giá trị đã sử dụng và chưa sử dụng trong PostgreSQL
  • Postgres thay đổi trình tự theo cách thủ công
  • Làm cách nào để đặt lại chuỗi khóa chính của postgres khi nó không đồng bộ?

Sự khác biệt duy nhất còn lại, một serial cột cũng được đặt thành NOT NULL . Bạn cũng có thể muốn hoặc không:

ALTER TABLE scores ALTER COLUMN job_id SET NOT NULL;

Nhưng bạn không thể chỉ cần thay đổi kiểu của integer hiện có :

ALTER TABLE scores ALTER job_id TYPE serial;

serial không phải là một kiểu dữ liệu thực tế. Đây chỉ là một tính năng tiện lợi mang tính ký hiệu cho CREATE TABLE .
Trong Postgres 10 trở lên, hãy xem xét IDENTITY cột:

  • Cột bảng tăng dần tự động


  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 để so sánh dữ liệu giữa hai cơ sở dữ liệu trong PostgreSQL?

  2. THỰC HIỆN ... Câu lệnh USING trong PL / pgSQL không hoạt động với loại bản ghi?

  3. Python / postgres / psycopg2:nhận ID của hàng vừa được chèn

  4. Cách hoạt động của Abs () trong PostgreSQL

  5. Postgres CONSTRAINT DUY NHẤT cho mảng