web-dev-qa-db-fra.com

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

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?

15
Jonas

deux options: Utilisez le "type de données" SÉRIE 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 *;
17
Frank Heikens

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-> ajoutez 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 dans la colonne de clé primaire à l'onglet Valeur actuelle dans les définitions, comme indiqué ci-dessous. enter image description here

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

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

15
toing_toing