Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde!
Estou com essa duvida e gostaria que vocês me ajudassem:
Estou desenvolvendo uma aplicação onde terei que gerar uma string (numero e letras) unica para cada registro inserido no banco, essa string tem que ser seqüencial, por isso, antes de inserir eu consulto o banco e pego a string gerada para o ultimo registro para poder gerar essa nova string sequencial. Esta aplicação terá muitos acessos simultâneos, então vem a pergunta:
Como o MySQL se comporta nesses casos? ele espera uma requisição acabar para executar outra ou executa varias ao mesmo tempo?
Pergunto isso porque se o MySQL executar varias requisições ao mesmo tempo eu corro o risco de duplicar essa string, desse jeito minha aplicação não seria segura.
Espero que tenha ficado claro e que vocês possam me ajudar.
Desde já agradeço a tenção de todos.
Prog, me desculpe mais ñ entedi.
quer dizer que realmente existe a possibilidade de duplicar a string?
como seria esse procedimento?
Agradeço mais uma vez a atenção.
pra nao ter esse tipo de complicação, as vezes faço algo simples, mas é meio tosco
gero um id baseado no timestamp e adiciono um rand
em php é algo assim
uniqid( time() )
isso gera uma string de 22 à 25 caracteres.
o inconveniente é que o ID fica muito extenso.
as chances de sair algo repetido é muito remoto porque é baseado no timestamp.
é possível coincidir mais de uma execução com o mesmo timestamp, por isso adiciono o uniqid() só pra garantir maior integridade.
Amigo, agradeço o auxilio mais essa string tem que ser sequencial.
Alguém tem uma ideai de como posso criar esse procedimento ou bloquear o acesso simultâneo ao MySQL?
pq nao usar primary key com auto increment?
porque tem que não pode ser um numero inteiro, tem que ser uma string.
Existe alguma função no MySQL que percorra uma string char por char?
antes de inserir eu consulto o banco e pego a string gerada para o ultimo registro para poder gerar essa nova string sequencial
Vou perguntar porque não sei como funciona a sua aplicação. Não dá para inserir no banco somente no final do processo? Talvez trabalhando com informações temporárias e atualizando estas ao final de acordo com a nova string sequencial?
nesse caso o caminho é do jeito que o public comentou
Seu entendimento esta correto.
Para solucionar este problema você pode criar um procedimento onde na mesma requisição você recupera e gera um novo sequencial.