[quote=fabgp2001]
Qualquer coisa poste ai.
]['s[/quote]
Fábio, respondendo a seus dois post, ok?
Bom, as coisas não estavm sendo feitas por SEQUENCES, quem gerenciava era a maldita classe com um select max comum.
Quando descobri tal fato, me dirigi ao gerente e o mesmo não acreditou que as coisas estavam nesse nível, mas enfim, discutimos e tiveram que por as tais sequences no oracle, isso afetou a minha aplicação e mais umas 3 que estavam entrando em produção nas quais detectei o mesmo problema.
É dificil acreditar, mas foi isso que aconteceu.
Foram feitos todos os sequences nas tabelas e todas estão funcionando perfeitamente, com exceção desta minha tabela principal que tem as chaves compostas.
O meu forte não é BD, só sei oque não se pode fazer hehe e creio que deveriam ter um DBA para isso, mas enfim.
Pelo que foi me passado, na vrdade rolou uma reunião com o pessoal que tem experiência dentro da empresa, e rolaram idéias, a maioria já citadas aqui.
A soluçaõ que tava discutindo com o mister_m, e acho que essa mesma que vc postou, foi desconsireda, porque segundo eles, a sequence não poderia ser usada em chave composta.
O mister_m me disse que pode, então vo ver isso amanha.
Quanto ao lock de tabela, realmente estava me referindo a lock naquele registro em questão que estaria seno usado, neste estaria tudo locado inclusive seus relacionamentos, certo? os outros 2999 não poderiam operar nada nele, certo?
Dai surgiu a idéia de usar a tabela auxiliar, e fazer lock nela em vez de na minha tabela principal, inicial era uma trigger qeu faria, mas o cliente vetou isso, então eu teria que controlar isso via aplicação, dai caimos no mesmo fato, por que a aplicação gerenciaria isso? e se me ocorre uma falha igual a que ocorreu, quem me garante a unicidade da chave? isso usando um select max, se fosse um equence daria certo, mas ai novamete teria a idéia de que a sequence não funcionaria porque a tabela auxiliar tbm seria de dois campos, dai esta idéia minguo novamente.
Quanto a usar o for update para dar lock no registro, era a solução melhor, só que novamente caiu em discussão que se eu tivesse 3000, 2999 em lock, e por acaso desse problema na app, seria feito um rollback, mas isso liberaria os 2999 caras, e ai boom n app novamente ehhe.
Essa informação foi desmentida por um amigo meu depois, segundo ele seria liberado somente o próximo cara da fila mesmo usando um for update.
Acho que ai surgiria o problema dessa fila de caras esperando a liberação do registro, isso me daria um belo problema tbm, ou não? sem dizer que o sistema é web, e os usuários ficariam loucos hehe talvez até um timeout ocorresse, ou vários refresh(F5), o que acho tbm ocorreria mais fila
Dai surgiu a idéia de seprarmos em uma classe o for update, , onde eu daria lock, incrementaria o valor, inseria na tabela, e libera a mesma, a cda acesso eu teria um valor novo, e seria uma operação teoricamente mais rápida de ser feita.
Acho que agora explanei mais como ta a coisa, talvez eu esteja aumenta a complexidade da coisa, mas é por ae.