Ordem de execução de operações

3 respostas
johnnylcon

Pessoal,

Tenho a seguinte situação:

  1º) Abro transação
  2º) Faço um update numa tabela "A"
  3º) Faço outras operações de update em outras tabelas
  4º) Faço um insert na mesma tabela "A" do primeiro update
  5º) Faço um commit no final para finalizar a transação.

  Quando eu analiso o log, percebo que o INSERT foi executado antes do UPDATE, mas como a minha tabela "A" tem uma trigger, preciso que o UPDATE seja executado antes do INSERT.

  Tentei usar o Session.flush() no final antes do commit e tive o mesmo resultado.

  Como faço para que o UPDATE seja executado antes do INSERT, na ordem que o meu método foi implementado.

Att.

3 Respostas

mauricioadl

nesse caso, eu particularmente, acho melhor usar store procedure do banco, basta vc colocar um before insert numa trigger e assim q vc dar o insert a trigger dispara o update antes.

johnnylcon

Vou tentar utilizar o before na minha trigger, mas não sei se atenderá minha situação, pois para que a minha trigger tenha o resultado esperado, eu preciso obrigatoriamente que o meu UPDATE seja feito antes do INSERT?

Obs.: Porque o Hibernate prioriza o INSERT, mesmo que o UPDATE venha antes do insert no meu código? E o Session.flush(), qual o real papel dela? Hoje eu uso o flsuh somente no final da minha transação antes de fazer o transaction.commit().

Valew…

johnnylcon

Pessoal,

Terntei seguir o conselho do mauricioadl, mas não deu certo.

  Obs.:

Porque o Hibernate prioriza o INSERT, mesmo que o UPDATE venha antes do insert no meu código?

E o Session.flush(), qual o real papel dela? Hoje eu uso o flsuh somente no final da minha transação antes de fazer o transaction.commit().

valew

Criado 26 de agosto de 2011
Ultima resposta 29 de ago. de 2011
Respostas 3
Participantes 2