sql >> Databasteknik >  >> RDS >> PostgreSQL

Automatisk ökning av tabellkolumnen

Postgres 10 eller senare

serial kolumner (se nedan) förblir oförändrade. Men överväg en IDENTITY kolumn. Postgres 10 implementerar denna standard-SQL-funktion.

Grundläggande syntax och information i manualen för CREATE TABLE .
Detaljerad förklaring i det här blogginlägget av dess primära författare Peter Eisentraut.

Skapa tabell med IDENTITY kolumn

CREATE TABLE staff (
   staff_id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY
 , staff    text NOT NULL
);

Lägg till IDENTITY kolumn till befintlig tabell

Tabell kan vara fylld med rader eller inte.

ALTER TABLE staff ADD COLUMN staff_id int GENERATED BY DEFAULT AS IDENTITY;

För att också göra det till PK samtidigt (tabellen kan inte ha en PK ännu):

ALTER TABLE staff ADD COLUMN staff_id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY;

Relaterat:

  • Hur lägger man till en PostgreSQL 10-identitetskolumn till en befintlig tabell med rader?

Ersätt serial med IDENTITY kolumn

Se:

  • Hur ändrar man ett tabell-ID från seriell till identitet?

Postgres 9.6 eller äldre

(Eller vilken version som helst.)
Använd serial pseudodatatyp istället:

CREATE TABLE staff (
   staff_id serial PRIMARY KEY,
 , staff    text NOT NULL
);

Den skapar och bifogar sekvensobjektet automatiskt och ställer in DEFAULT till nextval() från sekvensen. Den gör allt du behöver.

Jag använde gemener i mitt exempel. Gör ditt liv med Postgres enklare.



  1. Försöker få tillgång till icke-objekt - CodeIgniter

  2. Hur man genererar Drop Table Statement för alla tabeller i en databas - SQL Server / T-SQL Tutorial Del 48

  3. Matcha Oracle-duplicerade kolumnvärden med Soundex, Jaro Winkler och Edit Distance (UTL_MATCH)

  4. hur man konverterar csv till tabell i oracle