Usuário com melhor resposta
Buscar Ultimo valor inserido no banco

Pergunta
-
Bom Dia Pessoal,
Estou utilizando o SQL SERVER 2005. Tenho uma tabela no banco que possuí como chave o CPF. Preciso buscar o ultimo valor inserido nesta tabela. Usando o MAX seria tranquilo (select max(cpf) from tbPessoa), porém estou procurando uma maneira sem usar o MAX.
Como o CPF NÃO é um campo auto-incremental, nao posso utilizar o @@IDENTITY.
Alguém saberia alguma outra forma de fazer??
Obrigada.
Fernanda.
Fernanda Lobo
Respostas
-
Boa Tarde,
O link abaixo pode esclarescer com mais detalhes:
SQL Server: Geração de seqüenciais de forma automática
http://www.plugmasters.com.br/sys/materias/836/1/SQL-Server%3A-Gera%E7%E3o-de-seq%FCenciais-de-forma-autom%E1tica
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
Como validar e-mails no SQL Server
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!569.entry
Classifique as respostas. O seu feedback é imprescindível- Marcado como Resposta Fernanda Lobo terça-feira, 19 de maio de 2009 19:57
Todas as Respostas
-
Olá,
Existem alternativas sim, no entanto, porque usar o max para o CPF?
Isso inclusive é uma pergunta bem recorrente no fórum. Faça uma busca por max + 1.
Segue um link do blog do Gustavo.
Piores práticas - Geração de seqüênciais baseados no MAX + 1
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!236.entry
Abraços
Demétrio Silva- Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 19 de maio de 2009 23:49
-
Ola Fernanda,
Não acredito que fazer a busca pela coluna CPF lhe atenderia plenamente.
Sugiro fazer a busca pelo ultimo valor inserido utilizando alguma outra coluna que voce tenha na tabela, para aí sim chegar no nro do CPF inserido.
[ ]s.
Trabalhando com bancos de dados em suspect mode
http://thiagocaserta.spaces.live.com/blog/cns!4E0E5D73BC52A3C1!355.entry
Dicas para o exame 70-431 (MCTS: SQL Server 2005)
http://thiagocaserta.spaces.live.com/blog/cns!4E0E5D73BC52A3C1!351.entry
Thiago Caserta - MCTS / MCTITP - Database Administrator / MCT -
-
Boa Tarde,
Não entendo o que você faria com o MAX(CPF) no momento da inserção.
Supondo que o último CPF seja 708.902.191-45 ? O que isso influencia na geração do próximo registro ?
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
Como validar e-mails no SQL Server
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!569.entry
Classifique as respostas. O seu feedback é imprescindível -
Pessoal..
Desculpem. O MAX(CPF) nao tem nada a ver.. acabei postando errado.. Nesta tabela o CPF eh chave primaria.. Acabei me confundindo com outra tabela que possui o ID como chave primaria, sendo assim para pegar o ultimo valor desta outra tabela utilizo o max(ID). (o ID eh auto-incremental..)
Na verdade eu quero buscar o ultimo registro inserido na tabela, no caso o CPF eh a chave primaria desta tabela.. Creio que a melhor solucao eh seguir o conselho do Thiago H Caserta, utilizar alguma outra coluna...
Falando sobre MAX. Em uma tabela tenho um campo ID auto-incremental. Para pegar o ultimo valor eu utilizo o MAX, select * from table where id = (select max(id) from table), alguém saberia outra forma de pegar o ultimo registro sem usar o MAX? neste caso sendo o ID como chave e auto-incremental.
Li algo sobre o @@IDENTITY, porém nao compreendi como usa-lo.
Obrigada.
Fernanda Lobo -
Fer,
Ok, sem crise!!!
Se esta table que você deseja obter o maior ID, utilizar a opção de auto-incremento chamada Identity, será possível obter a informação de forma fácil através do:Select @@identity
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA -
Boa Tarde,
O link abaixo pode esclarescer com mais detalhes:
SQL Server: Geração de seqüenciais de forma automática
http://www.plugmasters.com.br/sys/materias/836/1/SQL-Server%3A-Gera%E7%E3o-de-seq%FCenciais-de-forma-autom%E1tica
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
Como validar e-mails no SQL Server
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!569.entry
Classifique as respostas. O seu feedback é imprescindível- Marcado como Resposta Fernanda Lobo terça-feira, 19 de maio de 2009 19:57
-
Olá Júnior,
Na maioria dos casos prefiro não usar o @@identity pois o mesmo é por sessão e retorna o último identity inserido em qualquer tabela da sessão. Isso pode trazer problemas com triggers, etc.
Acredito que os posts do Gustavo possam ajudar nosso colega.
Abraços
Demétrio Silva -
Demétrio,
Eu também não uso o @@identity... Prefiro o SCOPE_IDENTITY que me dá o identity do insert da minha sessão...
SELECT SCOPE_IDENTITY() AS [MeuUltimoRegistroInserido_Identity]
MCT / MCITP - Database Administrator MCITP - Database Developer 2008 -