Từ tài liệu :
Các loại dữ liệu smallserial
, serial
và bigserial
không phải là các kiểu true, mà chỉ đơn thuần là một sự tiện lợi về mặt ký hiệu để tạo các cột định danh duy nhất (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). Trong triển khai hiện tại, chỉ định:
CREATE TABLE tablename (
colname SERIAL
);
tương đương với việc chỉ định:
CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
colname integer NOT NULL DEFAULT nextval('tablename_colname_seq')
);
ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;
Do đó, chúng tôi đã tạo một cột số nguyên và sắp xếp các giá trị mặc định của nó được gán từ một trình tạo chuỗi. Ràng buộc NOT NULL được áp dụng để đảm bảo rằng không thể chèn giá trị null. (Trong hầu hết các trường hợp, bạn cũng muốn đính kèm ràng buộc KHÓA DUY NHẤT hoặc CHÍNH XÁC để ngăn các giá trị trùng lặp do ngẫu nhiên chèn vào, nhưng điều này không tự động.) Cuối cùng, trình tự được đánh dấu là cột "sở hữu", do đó sẽ bị xóa nếu cột hoặc bảng bị xóa.