Comment spécifier qu'une colonne doit être auto-incrémentée dans pgAdmin?

14

J'ai commencé à apprendre pgAdmin III pour gérer une base de données PostgreSQL. Mais ce n'était pas une application facile à utiliser.

Si je crée ou ai créé une table avec pgAdmin III, comment puis-je ajouter la fonctionnalité "incrémentation automatique" sur un identifiant de colonne de type entier?

Jonas
la source

Réponses:

17

deux options: Utilisez le "type de données" SERIAL ou créez une séquence et utilisez cette séquence comme valeur par défaut pour votre entier:

CREATE SEQUENCE your_seq;
CREATE TABLE foo(
  id int default nextval('your_seq'::regclass),
  other_column TEXT
);
INSERT INTO foo(other_column) VALUES ('bar') RETURNING *;
Frank Heikens
la source
1
Cette réponse pourrait être mise à jour pour inclure GENERATED BY DEFAULT AS IDENTITYintroduite avec Postgres> = 10.
Madbreaks
15

Si vous voulez le faire dans PGAdmin, c'est beaucoup plus facile que d'utiliser la ligne de commande. Il semble dans PostgreSQL, pour ajouter un incrémentation automatique à une colonne, nous devons d'abord créer une séquence d'incrémentation automatique et l'ajouter à la colonne requise. J'ai aimé ça.

1) Tout d'abord, vous devez vous assurer qu'il existe une clé primaire pour votre table. Conservez également le type de données de la clé primaire en bigint ou smallint. (J'ai utilisé bigint, je n'ai pas pu trouver un type de données appelé série comme mentionné dans d'autres réponses ailleurs)

2) Ajoutez ensuite une séquence en cliquant avec le bouton droit sur séquence-> ajouter une nouvelle séquence . S'il n'y a pas de données dans le tableau, laissez la séquence telle quelle, ne faites aucune modification. Enregistrez-le. S'il existe des données existantes, ajoutez la dernière valeur ou la valeur la plus élevée de la colonne de clé primaire à l'onglet Valeur actuelle dans les définitions, comme illustré ci-dessous. entrez la description de l'image ici

3) Enfin, ajoutez la ligne nextval('your_sequence_name'::regclass)à la valeur par défaut dans votre clé primaire comme indiqué ci-dessous.

entrez la description de l'image ici Assurez-vous que le nom de la séquence est correct ici. C'est tout et l'incrémentation automatique devrait fonctionner.

toing_toing
la source
4
Je ne suis pas d'accord sur le "plus facile dans PgAdmin". Vous pensez qu'il est plus facile d'effectuer des clics que de simplement créer une colonne SERIAL?
ypercubeᵀᴹ
1
Dois-je dire plus facile pour ceux qui sont habitués aux interfaces graphiques et si vous n'êtes pas familier avec les lignes de commande. :)
toing_toing