Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

CooLeR

Varios usarios, um banco

Recommended Posts

Aeeee galera.. tudo bem???Bom.. la venho eu com problemas denovo!!Tenho aki um sistema em ASP com banco de dados em access!!No momento 3 digitadores usam esse sistema.Na pagina que insere os dados no banco, é gerado um codigo, que é sequencial!!!Até ai tudo bem!!!MMMAAAAASSSS!!! se dois dos usuarios apertarem acessarem a pagina de incersão de dados ao mesmo tempo, ele vai gerar o mesmo codigo para os dois!!!! e isso não pode acontecer!!!Existe alguma solução possivel!!??!!??!!??!!??

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode utilizar uma transação do ADO, que vai dar um lock na tabela durante a inserção:conexao.BeginTransactionconexao.execute "insert into..."conexao.CommitTransactionPorém o seu código sequencial tem q ser do tipo autonumeração...ou então você pode usar uma tabela auxiliar que sempre grava o último código, eu uso esta e acho a melhor opção...

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu costumo fazer assim no caso de tabelas com campos autonumerados ou sequenciais:crie uma tabela onde será guardado os últimos códigos das tabelas que utilizam campos auto numerados, or exemplo:nome : tbCodigoscampo: nmTabela - tipo textocampo: codigo - tipo númerodados exemplo:tbCliente 5tbFuncionario 123Quando o usuário entrar no cadastro, crie uma rotina que busque o ultimo código inserido para a referida tabela e acrescente um, atualizando a tabela de códigos......lembrei de outro lance também...Se o teu campo for somente numero, pode usar isto:insert into tabela (campoAutoNumber, campoX)(select max(campoAutoNumber) + 1 from tabela), VALORassim funciona legal, porém o código fica um pouco mais lento...

Compartilhar este post


Link para o post
Compartilhar em outros sites

é que assim, o cliente me pediu que cada proposta digitada tivesse um codigo (ele me mandou o pardao) que tem a ver com o dia, ano, mes e uma sequencia de quatro digitos...o modelo é mais ou menos assimy310020078y - o codigo da empresa3 - o ultimo digito do ano10 - o mes02 - o dia0078 - a septuagesima oitava proposta digitada hoje..ai o que eu faço.. na hora que o cara vai cadastrar.. antes do insert.. ele fais uma busca no banco e adiciona 1 (pra ser o codigo da proposta atual!!)ex:RS(cod_proposta) = ... & left(RS1(cod_proposta),4)+1só que se dois digitadores fizerem isso ao mesmo tempo... na consulta ao banco aonde ele pega o ultimo registro, ambos vão ser o mesmo.. logo gerando o mesmo codigo e cadastrando no banco!!AAAAAAAAHHHHHHHHHHH q q eu faço???

Compartilhar este post


Link para o post
Compartilhar em outros sites

... isso é uma prática comum, de qualquer forma na hora da inserção vai existir um lock ( nano segundos) e a próxima ação fica na fila (deadlock)...Valeu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.