Em ter, 4 de jul de 2017 às 16:55, POWER Informática <
power.informatica....@gmail.com> escreveu:

> Bom dia pessoal,
>
> Antes de continuar as pesquisas no são Google, vou compartilhar com
> vocês um probleminha que estou tendo aqui, e antes ainda de fazer uma
> gabiarra.
>
> A ideia é incluir a nota fiscal e depois em uma tabela "itensdanota"
> incluir os itens, estou usando a seguinte instrução[2] para pegar o
> último id, MAS ... tudo isso dentro de uma TRANSAÇÃO.
>
> 1) envio os dados para a tabela "notas"
>
> 2) SELECT MAX(idnf)as ultimoid FROM notas
>
> 3) Envio uma linha para a tabela "itensdanota"
>
> Como ainda não foi executado o commit, não esta me retornando o ID correto
>

Se outras transações concorrentes comitarem, você verá o id delas, não o
que você quer com o seu SELECT max(...)...



> É assim mesmo antes do commit não posso pegar esse ID ?
>

Use returning ao fazer o insert na sua tabela notas, exermplo:

INSERT INTO notas (a, b, c) VALUES (n1, n2, n3) RETURNING id;



> Obs: PostgreSQL / PHP
>

Ainda bem, se fosse MySQL / PHP eu ia ficar preocupado contigo.

[]s
Flavio Gurgel
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a