Auto Incremento

SQL Server

24/06/2004

Olá Amigos, sou novato em Sql Server, mais, criei um campo Auto Incremento, só que quando cancelo a operação de insert na tabela, o contador armazena aquele número e salta pro próximo, por exemplo. Clico em NOVO, aparece o código 204, quando clico no cancelar, ele auto incrementa o código, mesmo sem eu ter salvo o registro, se eu clicar em NOVO de novo, o auto incremento vai para 205. Como fço para que isso não ocorra ?


Marcos.rio

Marcos.rio

Curtidas 0

Respostas

Fer_nanda

Fer_nanda

24/06/2004

Minha sugestão é não utilizar o auto incremento. Vc pode tratar o código fazendo uma qry:
  select max(codigo)+1 as ultimocodigo from tabela


Assim vc sempre terá o último código e evita esses tipos de transtornos.
Até


GOSTEI 0
Fabiano_monteiro

Fabiano_monteiro

24/06/2004

Marcos

Tudo bem?

Apenas complementando a dica da Fer_nanda, complemente com o seguinte:

select ISNULL(max(codigo)+1,1) as ultimocodigo from tabela

Com o Isnull vc garante que irá retornar algum valor. No caso de sua tabela estar vazia retornará ´nulo´ para vc. E com a função acima, estando nulo, retornará 1. Correto?

Abração


GOSTEI 0
Marcus.magalhaes

Marcus.magalhaes

24/06/2004

Utilize o auto incremento sim, pq se vc criar um incremento na mão vc pode ter 2 problemas :

1) Duplicate key, pq 2 ou mais conexões podem ler o mesmo registro antes q uma delas consiga realizar o insert, pois o select faz lock compartilhado.
2) Fazendo o incremento na mão vc perde tempo, ou seja, sua performance é degradada.

Portanto é preferível q vc perca a sequência do que o cliente tomar erro de chave duplicada.

Att,


GOSTEI 0
POSTAR