Problemas com inserção em um campo Identity
02/06/2014
0
Tive que excluir um registro em uma tabela que possui a função identity habilitada.
Ao tentar fazer um update na mesma posição em que exclui o registro, o banco me retorna que nenhum registro foi inserido.
Como faço para usar essa posição existente no banco?
[img:descricao=Identity]http://arquivo.devmedia.com.br/forum/imagem/368482-20140602-114503.jpg[/img]
Odilon Junior
Posts
04/06/2014
Jefferson Santos
Para isso utilize o identity_insert.
04/06/2014
Joel Rodrigues
Entendi que você está tentando alterar um registro que foi excluído, é isso? Se for, faz sentido que não retorne nenhuma linha alterada, pois o registro que você está tentando alterar não existe mais.
04/06/2014
Odilon Junior
Para isso utilize o identity_insert.
Eu ja tentei desabilitar, e quando vou inserir dados, dá a seguinte mensagem:
[img:descricao=Identity]http://arquivo.devmedia.com.br/forum/imagem/368482-20140604-155359.jpg[/img]
04/06/2014
Odilon Junior
Entendi que você está tentando alterar um registro que foi excluído, é isso? Se for, faz sentido que não retorne nenhuma linha alterada, pois o registro que você está tentando alterar não existe mais.
Oi Joel.
O que ocorre é que deu um erro na inserção de um certo dado. Esse dado seria inserido em um campo com o identity habilitado. Porém como esse dado não foi inserido, o próximo dado foi inserido pulando essa posição. No caso, o dado1 ficou com id = 1 e o dado 2 ficou com o id = 3.
Fiz um select no id = 2 e tive um retorno mostrando apenas o nome das colunas da tabela sem registro nenhum.
Daí, desabilitei o identity, fiz um delete from tbl_midia where id_midia = 2 e tentei inserir dados utilizando o id_midia = 2.
Queria saber se perdi essa posição na tabela e se tem como recuperar somente a posição.
04/06/2014
Jefferson Santos
Para isso utilize o identity_insert ou no modo grafico desabilite o Identity.
Os campos identity em casos de erro eles pulam o sequencial, por isso você não conseguiu.
04/06/2014
Itamar Souza
Quando o campo tem um identity habilitado, após excluir o registro aquela posição não vai mais existir mais também não conseguira utiliza-la. Você não vai conseguir usar update para preencher o campo, se você quer usar aquela posição, você vai ter que desabilitar o identity do campo e depois dar um insert no campo usando o id que precisa, mais toma cuidado, e arriscado fazer isso em produção, fora que pode ter integração com outras tabelas e vai afetar a inserção diretamente, assim que tira o identity vai gera erro no sistema é bom testar antes em um banco de backup.
04/06/2014
Joel Rodrigues
05/06/2014
Odilon Junior
Na verdade não é tão importante assim . Mas gostaria de saber se tem jeito de recuperar caso eu necessite.
Tudo que estou fazendo, é em ambiente de homologação. É o primeiro banco de dados que implemento e estou fazendo
todos os testes possíveis antes de colocá-lo em produção.
05/06/2014
Joel Rodrigues
05/06/2014
Odilon Junior
Só que não deu certo.
Clique aqui para fazer login e interagir na Comunidade :)