Prezados,
Estou com um problema, mas para facilitar o entendimento vou usar o clássico caso de "pedido" e "ítens de pedido", abstraindo em pseudo código.
conexao.AutoCommit = false; // para transacao
insertTabelaPedidos();
id_pedido = selectTabelaPedidos(ultimo pedido inserido);
insertTabelaItemPedido(item_1, id_pedido);
insertTabelaItemPedido(item_2, id_pedido);
insertTabelaItemPedido(item_3, id_pedido);
conexao.commit();
Ao selecionar o ID no banco, pode ser q ele pegue outro ID e não do inserido, uma vez que o commit da transação só é feita no final deste processo. Em outras palavras, ele não fará uma leitura suja? Ou, é garantido que o commit ele realiza e finaliza a primeira instrução (buscar ID) antes de iniciar a segunda (usar ID buscado para inserir)?
Já resolvi o problema com a ajuda do forum de inserir retornando o ID (isto seria uma solução), mas mantendo essa pratica (no caso para o postgresql <= v8.1 ou em outra ação no banco), é segura a forma apresentada?
obrigado