Array
(
)

Auto Incremento

Marcos.rio
   - 24 jun 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 ?

Fer_nanda
   - 04 jul 2004

Minha sugestão é não utilizar o auto incremento. Vc pode tratar o código fazendo uma qry:
#Código

  select max(codigo)+1 as ultimocodigo from tabela


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

Fabiano_monteiro
   - 12 jul 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

Marcus.magalhaes
   - 12 jul 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,