Re: traitement par lots et sequence

CRUMEYROLLE Pierre <[email protected]> Tue, 11 Jun 2019 19:50:48 +0200
Newsgroups gmane.comp.db.postgresql.french
Message-ID <[email protected]>
ok

mais dans le
WITH ins_t_mere AS(INSERT INTO t(a,b,c) VALUES (1,'a','aa') RETURNING a)
> INSERT INTO t_fille SELECT a, 'b', 'bb') FROM ins_t_mere;
ne fait pas un traitement par lot

merci


Anthony Nowocien <[email protected]> a =C3=A9crit=C2=A0:

> Bonjour Pierre,
>
> Peux-tu utiliser la clause RETURNING de l'INSERT?
>
> Exemple :
> INSERT INTO t(a,b,c) VALUES (1,'a','aa') RETURNING a;
>
> WITH ins_t_mere AS(INSERT INTO t(a,b,c) VALUES (1,'a','aa') RETURNING a)
> INSERT INTO t_fille SELECT a, 'b', 'bb') FROM ins_t_mere;
>
> Voir https://www.postgresql.org/docs/current/sql-insert.html
>
> Dans la partie VALUE, tu pourras peut-=C3=AAtre aussi utiliser DEFAULT po=
ur ta
> colonne d'ID.
>
> Anthony
>
> On Tuesday, June 11, 2019, CRUMEYROLLE Pierre <[email protected]>
> wrote:
>> bonjour
>>
>> probl=C3=A9me :
>>
>> soit 2 tables : T_meres et T_filles li=C3=A9es par  T_meres.idMere
>>
>> je veux faire du traitement par lots pour avoir des performances car gro=
s
> volumes
>>
>> donc insertion par lots des T_meres sous la forme suivante
>>
>> insert into T_meres idMere,datamere values
> ((1,datam1),(2,datam2),(3,datam3), .... (n,datamn));
>>
>> idem insertion par lots des T_filles sous la forme suivante
>>
>> **** les n filles de la m=C3=A9re 1 *****
>>
>> insert into T_filles idFils,idMere,datamere values
> ((1,1,dataf1),(1,1,dataf2),(1,1,dataf3), .... (n,1,datafn));
>> insert into T_filles idFils,idMere,datamere values
> ((2,1,dataf1),(2,1,dataf2),(2,2,dataf3), .... (2,1,datafn));
>> .......
>> insert into T_filles idFils,idMere,datamere values
> ((n,1,dataf1),(n,1,dataf2),(3,1,dataf3), .... (n,1,datafn));
>>
>> **** les n filles de la m=C3=A9re 2 *****
>>
>> insert into T_filles idFils,idmere,datamere values
> ((1,2,dataf1),(2,2,dataf2),(3,2,dataf3), .... (n,2,datafn));
>> insert into T_filles idFils,idmere,datamere values
> ((1,2,dataf1),(2,2,dataf2),(3,2,dataf3), .... (n,2,datafn));
>> .......
>> insert into T_filles idFils,idmere,datamere values
> ((1,2,dataf1),(2,n,dataf2),(3,n,dataf3), .... (n,n,datafn));
>>
>> etc ....
>>
>> Ma question :
>> Comment recuperer ou provisionner la plage de sequence balay=C3=A9 dans
> l'insert des m=C3=A9res pour l'utiliser dans l'insert des filles dans un
> traitement par lots  de fa=C3=A7on la plus =C3=A9fficace ?
>>
>> merci pour toute id=C3=A9e
>>
>>
>>