Em 5 de julho de 2017 15:45, Sebastian Webber <sebast...@swebber.me> escreveu: > > Em 4 de julho de 2017 12:10, POWER Informática < power.informatica....@gmail.com> escreveu: >> >> Achei nas minhas pesquisas essa dica, que é exatamente o que precisava fazer; >> >> ---------------------------- >> >> BEGIN; >> >> INSERT INTO pedido(data) VALUES (now()); >> >> INSERT INTO item (fk_pedido, produto, quantidade, valor) >> VALUES (currval(‘pedido_numero_seq’), ‘Camiseta’, 2, 25.00); >> >> INSERT INTO item (fk_pedido, produto, quantidade, valor) >> VALUES (currval(‘pedido_numero_seq’),‘Calça’, 2, 40.70); >> >> INSERT INTO item (fk_pedido, produto, quantidade, valor) >> VALUES (currval(‘pedido_numero_seq’), ‘Meia’, 5, 5.90); >> >> INSERT INTO item (fk_pedido, produto, quantidade, valor) >> VALUES (currval(‘pedido_numero_seq’), ‘Camisa’, 1, 60.00); >> >> COMMIT; > > > Existe uma grande chance de isso não funcionar. >
Porque nao??? Essa abordagem funciona sim e muito bem, porque o primeiro INSERT vai executar o NEXTVAL para setar o valor DEFAULT da chave primária da tabela "pedido" e se vc usar o CURRVAL dentro da mesma sessão ele irá retornar sim o valor corrente. A forma que o PostgreSQL implementa a dupla NEXTVAL e CURRVAL é justamente pra resolver esse tipo de problema. Att, -- Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/ PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral