PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come convertire la chiave primaria da intera a seriale?

serial è uno pseudo tipo di dati, non un tipo di dati effettivo. È un integer sotto con alcuni comandi DDL aggiuntivi eseguiti automaticamente:

  1. Crea una sequenza (con il nome corrispondente per impostazione predefinita).
  2. Imposta la colonna NOT NULL e l'impostazione predefinita per disegnare da quella sequenza.
  3. 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.