sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur konverterar man primärnyckel från heltal till seriell?

serial är ett pseudo datatyp, inte en faktisk datatyp. Det är ett integer nedan med några ytterligare DDL-kommandon som körs automatiskt:

  1. Skapa en sekvens (med matchande namn som standard).
  2. Ange kolumnen NOT NULL och standard för att rita från den sekvensen.
  3. 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.




  1. SSRS 2014 rapport implementeringsproblem

  2. SQLite INTERSECT Operator

  3. Hur vet jag när min docker mysql-behållare är uppe och mysql är redo att ta emot frågor?

  4. [Video] Dataintegration med PostgreSQL