PostgreSQL - TĂNG TỰ ĐỘNG
PostgreSQL có các kiểu dữ liệu smallserial , serial và bigserial ; đây không phải là các kiểu true, mà chỉ đơn thuần là sự tiện lợi về mặt ký hiệu để tạo các cột định danh duy nhất. Chúng tương tự như thuộc tính AUTO_INCREMENT được hỗ trợ bởi một số cơ sở dữ liệu khác.
Nếu bạn muốn một cột nối tiếp có một ràng buộc duy nhất hoặc là một khóa chính, thì bây giờ nó phải được chỉ định, giống như bất kỳ kiểu dữ liệu nào khác.
Tên kiểu nối tiếp tạo ra một cột số nguyên . Tên loại bigserial tạo ra một cột bigint . bigserial nên được sử dụng nếu bạn dự đoán việc sử dụng hơn 2 31 số nhận dạng trong suốt thời gian tồn tại của bảng. Tên loại smallserial tạo ra một cột smallint .
Cú pháp
Cách sử dụng cơ bản của SERIAL dataype như sau:
CREATE TABLE tablename (
colname SERIAL
);
Thí dụ
Hãy xem xét bảng COMPANY sẽ được tạo như sau:
testdb=# CREATE TABLE COMPANY(
ID SERIAL PRIMARY KEY,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
Bây giờ, hãy chèn các bản ghi sau vào bảng COMPANY -
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ('Allen', 25, 'Texas', 15000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ('Teddy', 23, 'Norway', 20000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'Mark', 25, 'Rich-Mond ', 65000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'David', 27, 'Texas', 85000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'Kim', 22, 'South-Hall', 45000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'James', 24, 'Houston', 10000.00 );
Điều này sẽ chèn bảy bộ giá trị vào bảng COMPANY và COMPANY sẽ có các bản ghi sau:
id | name | age | address | salary
----+-------+-----+------------+--------
1 | Paul | 32 | California | 20000
2 | Allen | 25 | Texas | 15000
3 | Teddy | 23 | Norway | 20000
4 | Mark | 25 | Rich-Mond | 65000
5 | David | 27 | Texas | 85000
6 | Kim | 22 | South-Hall | 45000
7 | James | 24 | Houston | 10000