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 >> >> >>