Z dokumentacji :
Typy danych smallserial
, serial
i bigserial
nie są prawdziwymi typami, a jedynie wygodą notacyjną do tworzenia unikatowych kolumn identyfikatorów (podobnie jak właściwość AUTO_INCREMENT obsługiwana przez niektóre inne bazy danych). W obecnej implementacji należy określić:
CREATE TABLE tablename (
colname SERIAL
);
jest równoważne określeniu:
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;
W ten sposób utworzyliśmy kolumnę liczb całkowitych i zaaranżowaliśmy jej wartości domyślne, które mają być przypisane z generatora sekwencji. Stosowane jest ograniczenie NOT NULL, aby zapewnić, że nie można wstawić wartości null. (W większości przypadków chciałbyś również dołączyć ograniczenie UNIQUE lub PRIMARY KEY, aby zapobiec przypadkowemu wstawieniu zduplikowanych wartości, ale nie jest to automatyczne). zostanie usunięty, jeśli kolumna lub tabela zostanie usunięta.