serial
е псевдо тип данни, а не действителен тип данни. Това е integer
отдолу с някои допълнителни DDL команди, изпълнявани автоматично:
- Създайте поредица (със съответстващо име по подразбиране).
- Задайте колоната
NOT NULL
и по подразбиране да се черпи от тази последователност. - Направете колоната „собствена“ на последователността.
Подробности:
- Безопасно и чисто преименувате таблици, които използват колони от сериен първичен ключ в Postgres?
bigserial
е същото, изградено около bigint
колона. Искате bigint
, но вече го постигна. За да трансформирате съществуващ serial
колона в bigserial
(или smallserial
), всичко, което трябва да направите, е да ALTER
типа данни на колоната. Последователностите обикновено се базират на bigint
, така че същата последователност може да се използва за всяко integer
тип.
За да "промените" bigint
в bigserial
или integer
в serial
, просто трябва да направите останалото на ръка:
- Създаване на PostgreSQL последователност към поле (което не е ID на записа)
Действителният тип данни все още е integer
/ bigint
. Някои клиенти като pgAdmin ще показват типа данни serial
в обратно проектирания CREATE TABLE
скрипт, ако всички критерии за serial
са изпълнени.