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 са изпълнени.