eu estou usando a linguagem asp com o flex. eu tenho vários arquivos asp responsáveis por inserções no banco de dados, pois quando eu vou adicionar um registro em uma tabela eu chamo (através do httpservice) os outros arquivos asp contendo inserções em alguns bancos e no inicio desses arquivos eu já busco o idmax da tabela principal. vi na documentação books online do sql server o IDENT_CURRENT o qual coloquei no projeto. fazendo testes em um ambiente mono-usuário percebo que os dados são inseridos às vezes corretamente e em outros momentos vejo que alguma parte do registro se vincula a um registro anterior e não ao correntemente inserido.
é como se o flex as vezes não entendesse com esse comando que o registro é o recentemente inserido e não o anterior a ele, sei lá por causa de cache ou alguma coisa. mas obrigado júlio pelas explicações. :) Em 4 de fevereiro de 2010 19:12, Júlio César Ködel <jcko...@gmail.com>escreveu: > 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 <mabro...@gmail.com>: > > 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 > > <collinpeters...@gmail.com> 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 < > >> collinpeters...@gmail.com> 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 <jcko...@gmail.com > >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 <collinpeters...@gmail.com>: > >> >> > 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 > >> >> > <collinpeters...@gmail.com> 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 > flexdev@googlegroups.com > >> >> > Para sair da lista, envie um email em branco para > >> >> > flexdev-unsubscr...@googlegroups.com > >> >> > 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 > flexdev@googlegroups.com > >> >> Para sair da lista, envie um email em branco para > >> >> flexdev-unsubscr...@googlegroups.com > >> >> 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 flexdev@googlegroups.com > > Para sair da lista, envie um email em branco para > flexdev-unsubscr...@googlegroups.com > > 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 flexdev@googlegroups.com > Para sair da lista, envie um email em branco para > flexdev-unsubscr...@googlegroups.com > Mais opções estão disponíveis em http://groups.google.com/group/flexdev > -- Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev