SELECT @@IDENTITY ou SELECT SCOPE_IDENTITY() retorna o último ID
inserido em qualquer tabela (dentro do escopo)

SELECT IDENT_CURRENT( ' TableName ' ) retorna o último ID inserido na
tabela 'TableName'

Note que @@IDENTITY é igual a SCOPE_IDENTITY() e que ela pega o último
ID inserido NA SESSÃO ATUAL, portanto, a menos que o teu SELECT não
seja imediatamente após a query, não tem como falhar.

Está usando qual linguagem no servidor? Se for .net, use Linq to SQL
ou ADO Entities Framework e pare de se preocupar =)

2010/2/4 Matheus <[email protected]>:
> Não entendi quando você diz que ele pega o maxid de uma tabela
> anterior? Na verdade acho que você quis dizer de uma tupla anterior né
> não? Se for isso verifique se você não está chamando a funcao de pegar
> o maxId antes de cadastrar.
> Abs
>
> On 4 fev, 12:25, Collin Peterson Mendes Chaves
> <[email protected]> wrote:
>> o ideal era que se tivesse esse @@identity podendo selecionar a tabela a
>> qual tenha aquele valor
>>
>> Em 4 de fevereiro de 2010 10:48, Collin Peterson Mendes Chaves <
>> [email protected]> escreveu:
>>
>> > oi Júlio, estou realmente usando sql server. eu estou usando realmente o
>> > select max(id). Agora esse select @@identity ele representa sempre o valor
>> > recentemente inserido. se eu adicionar um registro ele pega o id do que foi
>> > inserido, mas se no meio do codigo eu inserir em outra tabela dados desse
>> > registro ele assume o id mais recente o dessa outra tabela inserida?
>> > Em 4 de fevereiro de 2010 10:22, Júlio César Ködel 
>> > <[email protected]>escreveu:
>>
>> > SELECT MAX(ID) functiona maravilhosamente bem...
>>
>> >> ...se estiver em um ambiente mono-usuário, mono-thread =P
>>
>> >> Diversas bases tem suporte para obter o último Identity inserido, vide
>> >> e-mail da Gabriela.
>>
>> >> Para MSSQL, seria SELECT @@IDENTITY
>>
>> >> 2010/2/4 Collin Peterson Mendes Chaves <[email protected]>:
>> >>  > fazendo um teste aqui, percebi que ele as vezes pega o max id não de
>> >> uma
>> >> > tabela que eu acabo de inserir, mas de uma imediatamente anterior
>>
>> >> > Em 4 de fevereiro de 2010 10:01, Collin Peterson Mendes Chaves
>> >> > <[email protected]> escreveu:
>>
>> >> >> pessoal estou com um problema que acho ser grave. tenho uma aplicação
>> >> que
>> >> >> preenche informações em várias tabelas diferentes. na aplicação quando
>> >> >> insiro um registro em uma tabela eu seleciono seu id (usando max id
>> >> >> inserido) para pegar esse id e inserir em uma outra tabela outras
>> >> >> informações. uso o mesmo procedimento para selecionar o id da primeira
>> >> >> tabela inserida para preencher outras tabelas. na hora de consultar no
>> >> banco
>> >> >> de dados vejo que alguns registros inseridos não aparecem por completo.
>> >> >> Eu aqui pensando no que poderia ser, eu acho que o problema que pode
>> >> está
>> >> >> ocorrendo é quando muita gente está inserindo dados ao mesmo tempo,
>> >> pois na
>> >> >> hora de selecionar o max id uma vez pode ser um valor e em outra vez
>> >> pode
>> >> >> ser outro já que outra pessoa tb está concorrentemente inserido. só que
>> >> vejo
>> >> >> o processo de inserção tão rápido que não sei se esse é o real
>> >> problema. se
>> >> >> for alguém pode me ajudar a resolver? (não sei se estou sendo claro)
>>
>> >> > --
>> >> > Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> >> > Para enviar uma mensagem, envie um e-mail para [email protected]
>> >> > Para sair da lista, envie um email em branco para
>> >> > [email protected]
>> >> > Mais opções estão disponíveis emhttp://groups.google.com/group/flexdev
>>
>> >> --
>> >> []
>> >> Júlio César Ködel G.
>> >> "Você pode ficar sem comer durante 3 dias, sem beber durante 2 dias,
>> >> mas não pode ficar sem respirar por mais de 5 minutos.
>> >> Então, antes de imprimir isso, lembre-se que o oxigênio deste planeta
>> >> vem da árvore morta para fazer o papel que irá utilizar."
>>
>> >> --
>> >> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> >> Para enviar uma mensagem, envie um e-mail para [email protected]
>> >> Para sair da lista, envie um email em branco para
>> >> [email protected]
>> >> Mais opções estão disponíveis emhttp://groups.google.com/group/flexdev
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para 
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev



-- 
[]
Júlio César Ködel G.
"Você pode ficar sem comer durante 3 dias, sem beber durante 2 dias,
mas não pode ficar sem respirar por mais de 5 minutos.
Então, antes de imprimir isso, lembre-se que o oxigênio deste planeta
vem da árvore morta para fazer o papel que irá utilizar."

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a