serial
è uno pseudo tipo di dati, non un tipo di dati effettivo. È un integer
sotto con alcuni comandi DDL aggiuntivi eseguiti automaticamente:
- Crea una sequenza (con il nome corrispondente per impostazione predefinita).
- Imposta la colonna
NOT NULL
e l'impostazione predefinita per disegnare da quella sequenza. - Rendi la colonna "proprietaria" della sequenza.
Dettagli:
- Rinominare in modo sicuro e pulito le tabelle che utilizzano colonne di chiave primaria seriale in Postgres?
Un bigserial
è lo stesso, costruito attorno a un bigint
colonna. Vuoi bigint
, ma l'hai già raggiunto. Per trasformare un serial
esistente colonna in un bigserial
(o smallserial
), tutto ciò che devi fare è ALTER
il tipo di dati della colonna. Le sequenze sono generalmente basate su bigint
, quindi la stessa sequenza può essere utilizzata per qualsiasi integer
digitare.
Per "cambiare" un bigint
in un bigserial
o un integer
in un serial
, devi solo fare il resto a mano:
- Creazione di una sequenza PostgreSQL in un campo (che non è l'ID del record)
Il tipo di dati effettivo è ancora integer
/ bigint
. Alcuni client come pgAdmin visualizzeranno il tipo di dati serial
nel reverse engineering CREATE TABLE
script, se tutti i criteri per un serial
sono soddisfatte.