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
