PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Colonne de tableau d'incrémentation automatique

Postgres 10 ou version ultérieure

serial colonnes (voir ci-dessous) restent inchangées. Mais considérez une IDENTITY colonne. Postgres 10 implémente cette fonctionnalité SQL standard.

Syntaxe de base et informations dans le manuel pour CREATE TABLE .
Explication détaillée dans cette entrée de blog de son auteur principal Peter Eisentraut.

Créer table avec IDENTITY colonne

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

Ajouter IDENTITY colonne à la table existante

Le tableau peut ou non être rempli de lignes.

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

Pour en faire également le PK en même temps (la table ne peut pas encore avoir de PK) :

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

Connexe :

  • Comment ajouter une colonne d'identité PostgreSQL 10 à une table existante avec des lignes ?

Remplacer serial avec IDENTITY colonne

Voir :

  • Comment changer un ID de table de série en identité ?

Postgres 9.6 ou version antérieure

(Ou n'importe quelle version, vraiment.)
Utilisez le serial type de pseudo-données à la place :

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

Il crée et attache automatiquement l'objet séquence et définit le DEFAULT à nextval() de la séquence. Il fait tout ce dont vous avez besoin.

J'ai utilisé des identifiants en minuscules dans mon exemple. Facilite votre vie avec Postgres.