Bom Dia Galera,
Estou com o seguinte problema, estou fazendo um select for update em uma linha da minha tabela, com isso essa somente essa linha deveria ficar "lockada".
Porém quando tento alterar algum registro de Outra linha na mesma tabela, tenho o problema de deadlock, dá a impressão que o lock está contecendo na tabela toda e não somente na linha.
Alguem sabe o que pode ser isso???
Valew
Primeiramente o banco esqueci de falar, é o Oracle.
E na verdade não é na mesma tabela…
eu tenho 3 tabelas, A, B e C.
a tabela A e C fazem FK com a tabela B, na mesma coluna.
eu faço o select update na tabela A, e a outra thread faz o select update na tabela C, qdo a thread tenta finalizar o update na tabela C, acontece o erro.
não sei se a FK está interferindo nisso, se preciso criar algum tipo de índice, não sei… to perdido…
Galera, descobri o problema.
quando eu fazia o update na tabela C, eu atualiza todos os campos e mesmo não alterando o meu ID eu escrevia ele de novo na tabela, com isso o banco entende que houve alteração no id, e por isso ele precisava validar as FK.
Então ele “lockava” a tabela C para validar o ID, a tabela B e outras tabelas que também tinha FK com a tabela B.
Como não vou alterar o ID, eu escreve todos os campos menos o ID, com isso não é necessário validar as FK.