Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

informatica

Sql Server (dúvidas em pedidos)

Mensagens Recomendadas

informatica    0
informatica

Bom dia,

Tenho uma dúvida numa base de dados em sql server que gostaria de esclarecer.

É o seguinte, imaginem que dois utilizadores em duas máquinas diferentes clicam num botão num form ao mesmo tempo. Esse botão tem a instrução de ir ao sql sever à tabela x, à coluna x e ver o último numero que lá esta e somar 1.

Na prática faz um insert de um número que é a soma de um mais o último numero que foi inserido.

A minha dúvida é se os utilizadores ao clicarem ao mesmo tempo ficam com o mesmo número, ou se, isso é impossível de acontecer?!

O sql executa pedido a pedido?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Caça    24
Caça

Num caso normal isso pode acontecer, quanto mais lenta for a ligação a BD mais provavel é isso acontecer.

Para contornar isso usa uma transacção.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

Isso pode acontecer, o que te "estraga" a base de dados.

O que tens de fazer é fazer a coluna 'Identity Increment', e fazer o insert sem "calcular" o número. Depois verificas qual foi o número inserido ( @@IDENTITY ) e usa-lo para o necessário. Fazendo assim, os dois utilizadores criam, e usam, números diferentes.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rechousa    61
Rechousa

Viva,

... Depois verificas qual foi o número inserido ( @@IDENTITY ) e usa-lo para o necessário...

Em vez do @@IDENTITY é recomendado usar o SCOPE_IDENTITY.

Mais informação aqui

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade