Làm cách nào để chỉ định rằng một cột sẽ được tự động tăng lên trong pgAdmin?


14

Tôi đã bắt đầu học pgAdmin III để quản lý cơ sở dữ liệu PostgreSQL. Nhưng nó không phải là một ứng dụng dễ sử dụng.

Nếu tôi tạo hoặc đã tạo một bảng có pgAdmin III, làm cách nào tôi có thể thêm chức năng "tự động tăng" trên một id cột có số nguyên kiểu?

Câu trả lời:


17

hai tùy chọn: Sử dụng SERIAL "datatype" hoặc tạo một chuỗi và sử dụng chuỗi này làm giá trị mặc định cho số nguyên của bạn:

CREATE SEQUENCE your_seq;
CREATE TABLE foo(
  id int default nextval('your_seq'::regclass),
  other_column TEXT
);
INSERT INTO foo(other_column) VALUES ('bar') RETURNING *;

1
Câu trả lời này có thể được cập nhật để bao gồm GENERATED BY DEFAULT AS IDENTITYgiới thiệu với Postgres> = 10.
Madbreaks

15

Nếu bạn muốn làm điều này trong PGAdmin, nó dễ hơn nhiều so với sử dụng dòng lệnh. Có vẻ như trong PostgreSQL, để thêm một mức tăng tự động vào một cột, trước tiên chúng ta cần tạo một chuỗi tăng tự động và thêm nó vào cột cần thiết. Tôi đã làm như thế này.

1) Trước tiên, bạn cần đảm bảo có một khóa chính cho bảng của bạn. Cũng giữ kiểu dữ liệu của khóa chính trong bigint hoặc smallint. (Tôi đã sử dụng bigint, không thể tìm thấy một kiểu dữ liệu được gọi là nối tiếp như được đề cập trong các câu trả lời khác ở nơi khác)

2) Sau đó thêm một chuỗi bằng cách nhấp chuột phải vào chuỗi-> thêm chuỗi mới . Nếu không có dữ liệu trong bảng, hãy để nguyên chuỗi, đừng thực hiện bất kỳ thay đổi nào. Chỉ cần lưu nó. Nếu có dữ liệu hiện có, hãy thêm giá trị cuối cùng hoặc cao nhất vào cột khóa chính vào giá trị Hiện tại trong tab Định nghĩa như được hiển thị bên dưới. nhập mô tả hình ảnh ở đây

3) Cuối cùng, thêm dòng nextval('your_sequence_name'::regclass)vào giá trị Mặc định trong khóa chính của bạn như hiển thị bên dưới.

nhập mô tả hình ảnh ở đây Hãy chắc chắn rằng tên trình tự là chính xác ở đây. Đây là tất cả và tự động tăng nên hoạt động.


4
Tôi không đồng ý về "dễ dàng hơn trong PGAdmin". Bạn nghĩ rằng việc đi qua các nhấp chuột dễ dàng hơn là tạo một cột SERIAL?
ypercubeᵀᴹ

1
Tôi sẽ nói dễ dàng hơn cho những người đã quen với GUI và Nếu bạn không quen với các dòng lệnh. :)
toing_to
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.