Auto Incremento
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
Curtidas 0
Respostas
Fer_nanda
24/06/2004
Minha sugestão é não utilizar o auto incremento. Vc pode tratar o código fazendo uma qry:
Assim vc sempre terá o último código e evita esses tipos de transtornos.
Até
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
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
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
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,
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