serial
er en pseudo datatype, ikke en faktisk datatype. Det er et integer
nedenunder med nogle ekstra DDL-kommandoer, der udføres automatisk:
- Opret en sekvens (med matchende navn som standard).
- Indstil kolonnen
NOT NULL
og standarden til at tegne fra den sekvens. - Gør kolonnen til at "eje" sekvensen.
Detaljer:
- Sikkert og rent omdøb tabeller, der bruger serielle primærnøglekolonner i Postgres?
En bigserial
er den samme, bygget op omkring en bigint
kolonne. Du vil have bigint
, men det har du allerede opnået. At transformere en eksisterende serial
kolonne til en bigserial
(eller smallserial
), alt hvad du skal gøre er at ALTER
kolonnens datatype. Sekvenser er generelt baseret på bigint
, så den samme sekvens kan bruges til ethvert integer
type.
For at "ændre" en bigint
ind i en bigserial
eller et integer
ind i en serial
, du skal bare klare resten i hånden:
- Oprettelse af en PostgreSQL-sekvens til et felt (som ikke er id'et for posten)
Den faktiske datatype er stadig integer
/ bigint
. Nogle klienter som pgAdmin vil vise datatypen serial
i den omvendte konstruktion af CREATE TABLE
script, hvis alle kriterier for en serial
er opfyldt.