serial
är ett pseudo datatyp, inte en faktisk datatyp. Det är ett integer
nedan med några ytterligare DDL-kommandon som körs automatiskt:
- Skapa en sekvens (med matchande namn som standard).
- Ange kolumnen
NOT NULL
och standard för att rita från den sekvensen. - Gör kolumnen "äga" sekvensen.
Detaljer:
- Ändra namn på tabeller som använder seriella primärnyckelkolumner i Postgres säkert och rent?
En bigserial
är densamma, byggd kring en bigint
kolumn. Du vill ha bigint
, men det har du redan uppnått. För att transformera en befintlig serial
kolumn till en bigserial
(eller smallserial
), allt du behöver göra är att ALTER
kolumnens datatyp. Sekvenser är i allmänhet baserade på bigint
, så samma sekvens kan användas för alla integer
typ.
Att "ändra" en bigint
till en bigserial
eller ett integer
till en serial
, du behöver bara göra resten för hand:
- Skapa en PostgreSQL-sekvens till ett fält (som inte är postens ID)
Den faktiska datatypen är fortfarande integer
/ bigint
. Vissa klienter som pgAdmin kommer att visa datatypen serial
i den omvända designen av CREATE TABLE
skript, om alla kriterier för en serial
är uppfyllda.