PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 07/05/2018 20:41:00

robinson
Membre

Insérer des enregistrements incrémentés avec une séquence dans table

Bonjour,

Après moultes recherches non concluantes sur le net, je me demandais si il était possible d’insérer 'automatiquement' des enregistrements incrémentés dans une table suivant une séquence spécifique. Je précise que je ne veux insérer que le champ incrémenté sur un pas défini.
Pour être plus précis, je cherche à remplir une table année ne possédant que le champ annee de 2005 à 2020 par exemple.
J'ai bien le

CREATE SEQUENCE annees INCREMENT BY 1
MINVALUE 2000
NO MAXVALUE
START WITH 2005
CACHE 100
OWNED BY année.annee

Suivi d'un

INSERT INTO année (annee) VALUES (nextval('annees'))

Mais cette dernière instruction ne vaut que pour un enregistrement à la fois.

J'aimerai arriver à quelque chose du genre
INSERT INTO annee (annee) VALUES (nextval('annees'), min_value('2005'), max_value('2020'))

Sauf que min_value et max_value ne sont pas des arguments de la fonction INSERT VALUES

Une idée?

Dernière modification par robinson (07/05/2018 20:47:25)

Hors ligne

#2 07/05/2018 21:40:46

gleu
Administrateur

Re : Insérer des enregistrements incrémentés avec une séquence dans table

Je ne suis pas sûr d'avoir bien compris, mais j'aurais tendance à dire ça :

INSERT INTO annee (annee) SELECT generate_series(2005, 2020, 1);

Le dernier argument (1) est à remplacer par l'incrément réellement souhaité (sachant que quand il vaut 1, il n'est pas nécessaire de le préciser mais bon, là, c'est pour l'exemple smile ).


Guillaume.

Hors ligne

#3 11/05/2018 17:23:59

robinson
Membre

Re : Insérer des enregistrements incrémentés avec une séquence dans table

Bonjour,

Cette fonction est magique! Moi qui pensait qu'il fallait passer par un montage complexe avec une séquence et une sorte de boucle... On découvre toujours de nouvelles fonctions!
Merci beaucoup.

Hors ligne

Pied de page des forums