От документи :
Типовете данни smallserial
, serial
и bigserial
не са истински типове, а просто нотационно удобство за създаване на колони с уникален идентификатор (подобно на свойството AUTO_INCREMENT, поддържано от някои други бази данни). В текущата реализация, указвайки:
CREATE TABLE tablename (
colname SERIAL
);
е еквивалентно на указване на:
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;
Така създадохме колона с цели числа и уредихме нейните стойности по подразбиране да бъдат присвоени от генератор на последователности. Приложено е ограничение NOT NULL, за да се гарантира, че нулева стойност не може да бъде вмъкната. (В повечето случаи бихте искали също да прикачите ограничение UNIQUE или PRIMARY KEY, за да предотвратите случайно вмъкване на дублиращи се стойности, но това не е автоматично.) Накрая, последователността се маркира като „притежаван от“ колоната, така че ще бъдат премахнати, ако колоната или таблицата бъдат премахнати.