Transação e isolamento via JDBC

0 respostas
pgnt

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

Criado 11 de julho de 2010
Respostas 0
Participantes 1