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 10/11/2015 13:42:08

thomasp
Membre

retour de multiples valeurs insérées

Bonjour à tous !

Est-il possible de faire un returning après un insert mais pour des valeurs multiples ? Actuellement, je dois déclarer autant de variables que je fais d'insert pour accueillir les valeurs créées :

declare 
  id1 integer;
  id2 integer;
  id3 integer;

begin
create table myTable (id serial,  value text);

insert into myTable (value) select "first insert" returning id into id1;
insert into myTable (value) select "second insert" returning id into id2;
insert into myTable (value) select "third insert" returning id into id2; 
end

Est-il possible de faire la même chose mais en retournant l'ensemble des valeurs crées dans une table, ce dont j'ai besoin car parfois je ne sais pas le nombre d'insert que je fais s'ils proviennent du résultat d'une requête :

insert into mytable(value)
  select "first insert"
  union  select "second insert"
  union select "third insert"
returning id into myReturnTable;

Merci beaucoup !

Hors ligne

#2 10/11/2015 14:03:54

rjuju
Administrateur

Re : retour de multiples valeurs insérées

Votre deuxième requête devrait fonctionner, sous réserve de remplacer les guillemets doubles par des guillemets simples.

Hors ligne

#3 10/11/2015 16:27:26

thomasp
Membre

Re : retour de multiples valeurs insérées

en effet.... merci

Hors ligne

#4 10/11/2015 20:14:55

edlm
Membre

Re : retour de multiples valeurs insérées

Je suis un peu étonné que cela puisse fonctionner car, sauf erreur, l'instruction:

insert into mytable(value)
  select "first insert"
  union  select "second insert"
  union select "third insert"
returning id into myReturnTable;

retourne plus d'une ligne (3 en l'occurence). Ce qui devrait lever une erreur à l'exécution, non ?


Quel est le type de myReturnTable ?


Éric

Hors ligne

Pied de page des forums