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

Responder a