none
Usar mesmos ID já deletados RRS feed

  • Pergunta

  • Boa noite ,

    tenho uma tabela Usuario onde tenho o campo ID_Usuario , quando cadastrei o primeiro ele incrementou o valor 1 , ou seja primeiro usuario tem o ID = 1 o segundo ID = 2 ....e assim vai até o ID = 10 .

    Porém deletei esses dez usuarios , quando fui criar um novo ele começou do ID = 11 , como utilizar os mesmos ID que foram deletados ?

    Obg.

    segunda-feira, 17 de março de 2014 01:04

Respostas

  • Julian,

    Pelo que percebi esses ID's são gerados automaticamente, certo? Não sou muito bom em SQL, mas acredito que o comando abaixo possa te ajudar.

    Digamos que o nome da sua tabela seja Tab_Users. O código ficará assim:

    DBCC CHECKIDENT('Tab_Users', RESEED, 0)

    Espero ter ajudado.

    • Sugerido como Resposta Giovani Cr segunda-feira, 17 de março de 2014 17:51
    • Marcado como Resposta Juliano Cezar segunda-feira, 17 de março de 2014 22:36
    segunda-feira, 17 de março de 2014 11:08

Todas as Respostas

  • Julian,

    Pelo que percebi esses ID's são gerados automaticamente, certo? Não sou muito bom em SQL, mas acredito que o comando abaixo possa te ajudar.

    Digamos que o nome da sua tabela seja Tab_Users. O código ficará assim:

    DBCC CHECKIDENT('Tab_Users', RESEED, 0)

    Espero ter ajudado.

    • Sugerido como Resposta Giovani Cr segunda-feira, 17 de março de 2014 17:51
    • Marcado como Resposta Juliano Cezar segunda-feira, 17 de março de 2014 22:36
    segunda-feira, 17 de março de 2014 11:08
  • Julian,

    Você vai precisar "desativar" o IDENTITY de sua coluna chave temporariamente para poder preencher estes ID´s deletados.

    Utilize o comando "SET IDENTITY_INSERT" e não esqueça de declarar o nome de todas às colunas quando inserir os dados neste método.

    Segue abaixo um exemplo para facilitar à todos:

    CREATE TABLE TB_TESTE ( ID_CLIENTE TINYINT IDENTITY(1,1) NOT NULL, NM_CLIENTE VARCHAR(20) NOT NULL )
    GO INSERT INTO TB_TESTE VALUES ('CLIENTE 1'); INSERT INTO TB_TESTE VALUES ('CLIENTE 2'); INSERT INTO TB_TESTE VALUES ('CLIENTE 3');
    GO

    SELECT * FROM TB_TESTE
    GO DELETE FROM TB_TESTE WHERE ID_CLIENTE = 2 SELECT * FROM TB_TESTE
    GO SET IDENTITY_INSERT TB_TESTE ON INSERT INTO TB_TESTE (ID_CLIENTE, NM_CLIENTE) VALUES (2, 'CLIENTE 2 B'); SET IDENTITY_INSERT TB_TESTE OFF
    GO
    SELECT * FROM TB_TESTE
    GO


    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    • Sugerido como Resposta Edinaldo Junior segunda-feira, 17 de março de 2014 12:48
    segunda-feira, 17 de março de 2014 12:37
    Moderador
  • @Julian Assange

    antes de sair aplicando as soluções dos nossos colegas ai, por favor, poste mais detalhes do seu ambiente, pois vamos supor que:
    Sua tabela não esteja "zerada" ou seja, ainda tenha um id = 1:

    1. Na solução do Durval Ramos, teria que ser feito uma tratativa caso exista relacionamentos perdidos, como citado no exemplo acima.
    2. Na solução do Atus Menezes da Silva, seu prox id será o 2, de forma automatica mas e as tabelas relacionais a este campo? Na exclusão dos dados, também foram excluidos nas tabelas filhos, mesmo as que nao tem relacioamento implicito, seja por falta uma modelagem correta ou por falha na programação?

    Em todo caso, teria ser verificado não somente o campo, mas seus relacionamentos e dependências.

    []s

    • Sugerido como Resposta Giovani Cr segunda-feira, 17 de março de 2014 17:51
    segunda-feira, 17 de março de 2014 15:02
  • @Julian Assange

    antes de sair aplicando as soluções dos nossos colegas ai, por favor, poste mais detalhes do seu ambiente, pois vamos supor que:
    Sua tabela não esteja "zerada" ou seja, ainda tenha um id = 1:

    1. Na solução do Durval Ramos, teria que ser feito uma tratativa caso exista relacionamentos perdidos, como citado no exemplo acima.
    2. Na solução do Atus Menezes da Silva, seu prox id será o 2, de forma automatica mas e as tabelas relacionais a este campo? Na exclusão dos dados, também foram excluidos nas tabelas filhos, mesmo as que nao tem relacioamento implicito, seja por falta uma modelagem correta ou por falha na programação?

    Em todo caso, teria ser verificado não somente o campo, mas seus relacionamentos e dependências.

    []s

    Advaldo,

    Caso houvesse um relacionamento "enforcando" os dados, o Julian não conseguiria excluir os registros. Se ainda assim existir um relacionamento entre tabelas, por uma ou mais colunas indicadas, o maior impacto será à manutenção nos índices vinculados à estes campos já que na inclusão dos novos dados, eles estarão fragmentados.

    Mas neste caso, estamos mudando demais o foco do tópico criado pelo Julian.

    Espero apenas ter ajudado à compreender à questão.

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    segunda-feira, 17 de março de 2014 18:06
    Moderador
  • Deleted
    segunda-feira, 17 de março de 2014 21:26
  • Atus ,

    funcionou perfeitamente , obrigado. =)

    segunda-feira, 17 de março de 2014 22:36
  • obrigado pela resposta, a solução do Atus deu certo tbm ;)
    segunda-feira, 17 de março de 2014 22:38
  • Advaldo agradeço sua preocupação , mas estou criando do zero meu banco, então até agora só usei para testes, sendo que deletei todos os registros de todas as tabelas .

    Muito obrigado.

    segunda-feira, 17 de março de 2014 22:41
  • Obrigado Durval ,

    realmente não daria , por isso deletei todos os registros dos relacionamentos que não são dependentes .

    segunda-feira, 17 de março de 2014 22:43
  • Boa noite Jose , 

    sim , eu estou usando um apelido ou nome de usuário rsrs , se for contra as regras do fórum me perdoe.

    até + 

    segunda-feira, 17 de março de 2014 22:45
  • Boa noite Jose , 

    sim , eu estou usando um apelido ou nome de usuário rsrs , se for contra as regras do fórum me perdoe.

    até + 

    Julian,

    Não é contra às regras. Na verdade, faz parte da Política de Privacidade das Comunidades TechNet e MSDN ( http://www.microsoft.com/privacystatement/pt-br/core/default.aspx ).

    Mas caso, exista alguma má conduta ou favorecimento próprio que possa ser comprovado pelo histórico de atividade dos usuários, os envolvidos podem ser punidos ou até mesmo banidos e suas contas extintas.

    Para evitar este tipo de situação, sugiro à leitura dos artigos abaixo:

    http://social.technet.microsoft.com/wiki/pt-br/contents/articles/11739.tudo-sobre-o-perfil.aspx

    http://social.technet.microsoft.com/wiki/pt-br/contents/articles/11624.como-ser-banido.aspx

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    segunda-feira, 17 de março de 2014 23:39
    Moderador
  •  "Julian Assange" não é o nome verdadeiro do usuário que criou este tópico...

        José Diz     Belo Horizonte, MG - Brasil


    José,

    Existe algum problema que você gostaria de relatar sobre o "Julian" ?

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    segunda-feira, 17 de março de 2014 23:41
    Moderador
  • Deleted
    terça-feira, 18 de março de 2014 00:10
  • Durval, quando percebi que o usuário se identificou como Julian Assange, e que todas as respostas iniciavam com "Julian, ", para mim ficou claro que havia algo de errado. Afinal, Julian Assange é um dos principais ativistas do Wikileaks... Então postei a observação de que esse não poderia ser o nome verdadeiro do usuário, para que os demais participantes do tópico não persistissem no engano.

    Embora tenha postado a observação somente como comentário, para alertar os demais participantes do tópico, isto demonstra como é importante que todos os usuários do fórum sejam orientados a se identificarem com o nome verdadeiro ou, pelo menos, o prenome. Isso facilita quando se está respondendo, pois o nome com que o usuário se apresenta é o elo de comunicação entre os participantes de um tópico.



        José Diz     Belo Horizonte, MG - Brasil


    José,

    Você tem razão, indicar um nome ou uma foto torna mais amigável o contato entre os membros da Comunidade. Esta identificação, com o tempo, só ajuda a pessoa na Comunidade, pois ela passa a ser reconhecida pelo nome ou pela foto/avatar. Mesmo que hoje alguns membros estejam mais aprendendo do que contribuindo, eu tenho certeza que logo estes que hoje perguntam, vão passar à ajudar: respondendo e esclarecendo dúvidas.

    Então, obrigado pela sua orientação !

    Amigos / "Julian",

    Todos tem direito à privacidade (eu mesmo uso o capacete de um personagem do filme Star Wars), mas disponibilizar um meio de identificação torna todos nós mais próximos do mundo "real" e este contato é importante principalmente em um meio profissional como o nosso.

    Apenas para mostrar que excelentes membros da Comunidade MSDN e TechNet utilizam avatares ou "nomes alternativos" vou citar 2 exemplos:

    XAML Guy (Peter Laker): http://social.technet.microsoft.com/profile/xaml%20guy/

    Este inglês é um dos melhores membros da Comunidade MSDN no mundo, e;

    Richard Mueller: http://social.technet.microsoft.com/profile/richard%20mueller/ 

    Um "velhinho" americano (ninguém dá importância quando vê a foto dele) é um dos primeiros MVP's do mundo. Premiado 8 vezes consecutivas como MVP e recentemente é MCC. 

    Tenho muito orgulho de conhecer ambos. E eu conheço eles porque eles permitem que tenhamos este contato (de alguma forma).

    Fica a dica !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    terça-feira, 18 de março de 2014 01:09
    Moderador
  • Durval, quando percebi que o usuário se identificou como Julian Assange, e que todas as respostas iniciavam com "Julian, ", para mim ficou claro que havia algo de errado. Afinal, Julian Assange é um dos principais ativistas do Wikileaks... Então postei a observação de que esse não poderia ser o nome verdadeiro do usuário, para que os demais participantes do tópico não persistissem no engano.

    Embora tenha postado a observação somente como comentário, para alertar os demais participantes do tópico, isto demonstra como é importante que todos os usuários do fórum sejam orientados a se identificarem com o nome verdadeiro ou, pelo menos, o prenome. Isso facilita quando se está respondendo, pois o nome com que o usuário se apresenta é o elo de comunicação entre os participantes de um tópico.



        José Diz     Belo Horizonte, MG - Brasil


    José,

    Você tem razão, indicar um nome ou uma foto torna mais amigável o contato entre os membros da Comunidade. Esta identificação, com o tempo, só ajuda a pessoa na Comunidade, pois ela passa a ser reconhecida pelo nome ou pela foto/avatar. Mesmo que hoje alguns membros estejam mais aprendendo do que contribuindo, eu tenho certeza que logo estes que hoje perguntam, vão passar à ajudar: respondendo e esclarecendo dúvidas.

    Então, obrigado pela sua orientação !

    Amigos / "Julian",

    Todos tem direito à privacidade (eu mesmo uso o capacete de um personagem do filme Star Wars), mas disponibilizar um meio de identificação torna todos nós mais próximos do mundo "real" e este contato é importante principalmente em um meio profissional como o nosso.

    Apenas para mostrar que excelentes membros da Comunidade MSDN e TechNet utilizam avatares ou "nomes alternativos" vou citar 2 exemplos:

    XAML Guy (Peter Laker): http://social.technet.microsoft.com/profile/xaml%20guy/

    Este inglês é um dos melhores membros da Comunidade MSDN no mundo, e;

    Richard Mueller: http://social.technet.microsoft.com/profile/richard%20mueller/ 

    Um "velhinho" americano (ninguém dá importância quando vê a foto dele) é um dos primeiros MVP's do mundo. Premiado 8 vezes consecutivas como MVP e recentemente é MCC. 

    Tenho muito orgulho de conhecer ambos. E eu conheço eles porque eles permitem que tenhamos este contato (de alguma forma).

    Fica a dica !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    Concordo com vocês , o minimo que posso fazer é contribuir para um ambiente mais agradável no fórum, já que estou adquirindo conhecimento sem ter que pagar por isso e também pela boa vontade de todos que estão respondendo e tentando me ajudar , fico feliz em saber que existem pessoas que dividem conhecimento dessa forma , para iniciantes como eu essas dicas valem ouro !!

    Então mudei meu apelido , passando a usar meu nome , obrigado!


    terça-feira, 18 de março de 2014 01:39