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 NULLoch 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.