Ir para conteúdo

POWERED BY:

Arquivado

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

bimpercursso

[Resolvido]  sobre usuarios silmultaneos

Recommended Posts

ola Amigos, preciso de uma ajuda quanto a uma duvida minha que tenho, vejam:

 

tenho um sistema aqui que estou desenvolvendo, porem sera um sistema que muitos usuarios irao acessar ao mesmo tempo, com isso irao fazer updates, deletes, e selects com seus respctivos IDs, ai que esta o problema, tenho medo de em algum momento do sistema um desses usuarios fazerem por exemplo um update silmultaneamente, e os IDs trocarem no momento do update, ou ate mesmo de uma select trazendo informações pessoais de cada usuario

 

nao sei se consigui explicar direito, mas podem perguntar se fico algo que nao expliquei

 

um amigo do forum "xanburzum" me indicou dessa forma

 

Recordset.open,SQL,1,2

porem eu gostaria de uma garantia para isso, pois sera muito arriscado, tenho um certo medo com isso

 

veja o que eu fiz

sql="update tb_usuarios set nome ='"& request("nome") &"'where usuarios_id="& request("ID")
Recordset.open,SQL,1,2

gostaria de saber se dessa forma estarei livre dessas ocorrencias.

 

alguem poderia me esclarecer

 

muito obrigado

 

Preciso muito dessa informação com certeza, alguem poderia me ajudar

 

tipo, se eu usar da forma acima e der um select na tabela dos ussuarios trazendo umas informações pessoais seria confiavel de trazer apenas os dados do usuario corretamente mesmo outros logando simultaneamente?

 

ou no caso um update em umas 3 ou 4 tabelas com o ID do proprio usuario, nao tem chance de atualizar outr usuario que esta fazendo ao mesmo tempo outra atualização na mesma tabela

 

agurado uma resposta

 

:unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nunca vi/ouvi nada parecido, mas creio que esse risco não ocorre. Essas ações são executadas por usuário e não com todos usuários de uma só vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao na verdade acho que nao conseguo explicar, imaginamos a seguinte situação

 

você ira logar em um sistema, mas antes sera necessario verificar algumas coisas no banco com seu ID para poder gravar em uma tabela informações de acesso de hora, e data para você, mas nesse mesmo momento um outro usuario esta logndo junto com você, ai o ID dele sera diferente que o seu, mas ao fazr algumas selects de cada vez o ID pode ser misturar e trocar com de outro usuairio que esta logando tbm, ai que esta, gostaria de resovler isso, sei que da para travar isso com o ponteriro e tal, como nosso amigo xanburzum falou, mas precisava de algumas confirmações, so sei que estou louco aqui, preciso muito saber como fazer a forma de nao ocorrer os risco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi. Esse risco não ocorre se você fizer a consulta baseada no ID do usuário que logou.

 

Por exemplo: Se você faz uma consulta ordenando o resultado pela data, hora, etc, de forma descrecente com o intuito de pegar o último registro, a chande de acontecer o que você está com medo que aconteça, é imensa.

 

Agora se você acrescenta nessa mesma consulta um WHERE (para comparar com o ID do usuário), a chance de misturar as informações é 0.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi hargon, entao creio que nao terei problemas com minhas selects e updates, com relaçao a isso de fazerem sulmultaneamente, menos mau, mas ja que tocou no assunto eu poderia t perguntar como fazer esse outro caso em que você busca por ordem decrescente o ultimo usuario, sera que ai eu usuari a a forma que o amigo xanburzum me disse em outro topico sobre o mesmo assunto

 

Recordset.open,SQL,1,2

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

*Retorna o código do ultimo do último log cadastrado

SELECT MAX(cdlog), cdusuario FROM log

 

*Retorna o código do ultimo do último log cadastrado ordernado de forma descrescente

SELECT TOP 1 cdusuario FROM log ORDER BY cdlog DESC

 

Para você conseguir o que quer sem ter problemas... basta incluir o WHERE

SELECT MAX(cdlog), cdusuario FROM log WHERE cdusuario=" & cdusuario

SELECT TOP 1 cdusuario FROM log cdusuario=" & cdusuario & " ORDER BY cdlog DESC

 

Ambas as formas pegarão o último registro, mas de um usuário em específico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal, muito obrigado

 

por exemplo vou precisar fazer um cadastro de um usuario, depois dar um select para pegar esse usuarios_id desse cliente, ai complcia tbm, pq se alguem cadastrar na mesma hora o ultimo pode nao ser o usuario que queremos, ai minha select sem o ID do cliente nao funcionara

 

 

 

select * from tb_usuarios where usuarios_id="& aqui seria o usuario do ultimo cliente cadastrado

dessa forma que me deu nao poderia fazer né, pois se eu pegar o ultimo ID pode nao ser o ultimo realemnte, pois se tiverem simultaneamentes nao serao o mesmo ID

 

alguem ideai para eu fazer

 

muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grave algo que dê para identificar o usuário. Por exemplo, gerar uma chave única a partir do IP e data.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hargon, uma curiosidade, se eu fazer uma chave unica por ip e data nao corro o risco de mais d uma pessoa fazer na mesma rede, o ip seria o mesmo, correto?, isso causaria o mesmo problema né

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas isso foi só um exemplo... você pode acrescentar um número randômico na chave, ou uma informação que será cadastrada, ou a hora completa (dificilmente terá um registro com mesmo IP, data, Hora, Minuto, Segundos).

 

Com certeza só IP e Data não será seguro.

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.