REGISTRO MAX() DE UMA TABELA NO SQL SERVER

 Tópico anterior Próximo tópico Novo tópico

REGISTRO MAX() DE UMA TABELA NO SQL SERVER

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#498903 - 29/12/2021 10:01:21

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Última edição em 29/12/2021 10:02:18 por JCM0867

Olá pessoal,

Digamos que eu tenho uma tabela Auto incremento de 1 a 10
Se eu deletar 5 registros  e escrever:
Select  Max(idCampo)+1 as Registro From Tabela  e resultará em  registro=6, só que deveria ser 11.
Como faço para aparecer 11 ao invés de 6? O que realmente dará se eu inserir um novo registro?

Grato




#498907 - 29/12/2021 12:56:18

COQUITO
BELO HORIZONTE
Cadast. em:Junho/2014


Última edição em 29/12/2021 12:59:14 por COQUITO

eu tinha esse mesmo problema, pesquisei muito no google infelizmente não tive sucesso.
o que eu fiz era criar uma tabela extra essa tabela registra o ultimo codigo usado do autoincremento ai eu fiz aplicar uma condição para pegar o valor ultimo exemplo

na tabela tab_reg gera teu autoincremento e na tablea tab_extra tenho
Cod_tabreg

ai coloco uma condição de consulta das variaveis
cod_auto as integer
cod_extra as integer
cod_atual as integer

chamo as 2 tabelas
cod_auto = (Max(idCampo)+1 as Registro From tab_reg)
cod_extra = (Max(Cod_tabreg) as Registro From tab_extra )

e aqui aplico as validações

if cod_extra  > cod_auto then

cod_atual = cod_extra  'aqui recebe o codigo atualizado

update na tabela tab_extra

else

cod_atual = cod_extra  'aqui recebe o codigo atualizado

update na tabela tab_extra


fiz isso algo parecido, deve existir outra forma de atualizar mais eu fiz assim e deu certo, assim eu não preciso controlar o autoincremento pela tabela ond esta teus registro, mas sim pela tabela extra.
ai vc pode excluir todo o registro da tabela origem mais na tabela extra fica registrado o ultimo id atualizado.









#498913 - 29/12/2021 16:03:13

JABA
CABO FRIO
Cadast. em:Agosto/2005


Última edição em 29/12/2021 16:14:50 por JABA

Se o seu campo está como autoincrement, a ID passará a ter o valor 11 na inserção do próximo registro, mesmo com as exclusões. Agora, se o que pretende fazer é outra coisa, então:

'Pega o último código inserido
Select idCampo as Registro from Tabela WHERE idCampo = @@Identity;


ou

Select IDENT_CURRENT('Tabela');



_______________________________________________________________________________________________

Se a alma ou esprito so imateriais, como eles fazem para se localizar quando o corpo est em movimento?



#498918 - 29/12/2021 19:19:17

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Última edição em 29/12/2021 19:35:18 por JCM0867

Achei uma alternativa bacana, no meu caso será até melhor:

Seria redefinir para que o incremento recomece a partir do maior registro independente de quantos foram apagados, assim sempre será o maior + 1

declare @max int;  
select @max = max(key) from table;  
dbcc checkident(table,reseed,@max)

na segunda linha ele pega o maior no caso do do exemplo do tópico seria o 5
na terceira linha ele redefine o auto incremento e o próximo registro agora será o 6 e não 11

Até parece que estou no contrário do que perguntei, na verdade eu quero ter o controle do próximo registro auto incremento

Grato pela ideias de como resolver





#498919 - 29/12/2021 19:58:03

JABA
CABO FRIO
Cadast. em:Agosto/2005


Citação:
Seria redefinir para que o incremento recomece a partir do maior registro independente de quantos foram apagados, assim sempre será o maior + 1



No exemplo inicial você disse que, mesmo após as exclusões, deveria-se retornar 11. Se for esse o caso, não precisa reinventar a roda, pois o autoincrement serve justamente para o que você quer. Basta apenas inserir o registro que a ID mudará para 11 automaticamente. Se o seu desejo é retornar a maior ID, incluindo as que foram deletadas, então use Select IDENT_CURRENT('Tabela') + 1, caso contrário, basta usar a função max para trazer a maior ID existente, exatamente como você fez.

_______________________________________________________________________________________________

Se a alma ou esprito so imateriais, como eles fazem para se localizar quando o corpo est em movimento?



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por JCM0867 em 30/12/2021 10:48:44