none
PK IDENTITY NÃO SEGUE A SEQUENCIA POR ORDEM RRS feed

  • Pergunta

  • Bom Dia Pessoal, estou com dois probleminhas, criei uma base de dados para uma Centro Medico, tudo estava a correr as mil maravilha, até que me deparei com um problema A chave pk identity(1,1) não esta a seguir a ordem dos numeros. Não eliminou-se nenhum registro, mas ela saiu de 278 para 10226, alguém sabe como resolver isto?

    O outro problema é este, o cliente pediu-me que queria que a pk começa-se a contar os numeros de 000 e não 0 eu fiz usando este codigo na procedure:

    CREATE PROC [dbo].[SP_FICHAP_SELECT]
    AS
    BEGIN
    SELECT RIGHT('000'+ CONVERT(VARCHAR,ID_Proces),3)'Processo',T1.[Nome],T2.[Document_Name],[Num_Documento] 
    ,[Data_Nascimento],[Idade],T3.[Sexo],[Estado_Civil],[Filho_de],[e_de],[Naturalidade],[Nacionalidade]
    ,[Residencia],[Profissao],T4.[COMPANYNAME],[Contacto1],[Contacto2],[Email],[Observaçoes]
    ,T5.[TipoPaciente],convert(varchar(10),[Data_de_insc],110)'Data_Inscricao',[Funcionario]
    FROM tb_FichaP AS T1 INNER JOIN tb_documento AS T2 ON
    T2.id_documento =T1.Tipo_documento INNER JOIN tb_sexo AS T3 ON T3.id_sex =T1.Sexo 
    INNER JOIN tb_Empresa AS T4 ON T4.ID_EM =T1.Empresa INNER JOIN  TPaciente AS T5
    ON T5.ID_TP =T1.Tipo_paciente 
    ORDER BY T1.[ID_Proces],Nome
    END

    mas quando ele chega nos 1000 ele corta o primeiro numero, ficando só três, dando este resultado, numeros repetidos.


    domingo, 20 de abril de 2014 02:24

Respostas

  • Deleted
    • Marcado como Resposta Giovani Cr quarta-feira, 23 de abril de 2014 19:23
    domingo, 20 de abril de 2014 12:49
  • José infelizmente sim, tentei desativar ele não aceitou, acredito que é porque o  ID_Proces esta a ser utilizada em relacionamentos com outras tabelas 

    alguma ideia, porque não estou a ver mais, ja tentei usar o DBCC CHECKIDENT (TB_FICHAP, RESEED,0) mesmo assim Nepias, mano ajudem-me por favor, o ID_proces esta relacionado com outras tabelas.

    GilBlazer,

    Se sua tabela possui realmente relacionamento de dados com outra(s) tabela(s) você não poderá alterar esta numeração porque vai gerar quebra de compatibilidade.

    O que você poderá fazer para ajustar este conteúdo é criar um novo campo IDENTITY com o mesmo datatype e posteriormente substituir o campo ID_PROCES pelo novo campo, dentro de seu sistema e nas tabelas que consomem estes dados.

    Veja um exemplo:

    SELECT * FROM tb_teste
    GO
    
    ALTER TABLE tb_teste ADD ID_IDENTITY int IDENTITY(1,1)
    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"

    • Marcado como Resposta Giovani Cr quarta-feira, 23 de abril de 2014 19:23
    quarta-feira, 23 de abril de 2014 11:26
    Moderador

Todas as Respostas

  • Deleted
    • Marcado como Resposta Giovani Cr quarta-feira, 23 de abril de 2014 19:23
    domingo, 20 de abril de 2014 12:49
  • José infelizmente sim, tentei desativar ele não aceitou, acredito que é porque o  ID_Proces esta a ser utilizada em relacionamentos com outras tabelas 

    alguma ideia, porque não estou a ver mais, ja tentei usar o DBCC CHECKIDENT (TB_FICHAP, RESEED,0) mesmo assim Nepias, mano ajudem-me por favor, o ID_proces esta relacionado com outras tabelas.

    terça-feira, 22 de abril de 2014 12:41
  • José infelizmente sim, tentei desativar ele não aceitou, acredito que é porque o  ID_Proces esta a ser utilizada em relacionamentos com outras tabelas 

    alguma ideia, porque não estou a ver mais, ja tentei usar o DBCC CHECKIDENT (TB_FICHAP, RESEED,0) mesmo assim Nepias, mano ajudem-me por favor, o ID_proces esta relacionado com outras tabelas.

    GilBlazer,

    Se sua tabela possui realmente relacionamento de dados com outra(s) tabela(s) você não poderá alterar esta numeração porque vai gerar quebra de compatibilidade.

    O que você poderá fazer para ajustar este conteúdo é criar um novo campo IDENTITY com o mesmo datatype e posteriormente substituir o campo ID_PROCES pelo novo campo, dentro de seu sistema e nas tabelas que consomem estes dados.

    Veja um exemplo:

    SELECT * FROM tb_teste
    GO
    
    ALTER TABLE tb_teste ADD ID_IDENTITY int IDENTITY(1,1)
    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"

    • Marcado como Resposta Giovani Cr quarta-feira, 23 de abril de 2014 19:23
    quarta-feira, 23 de abril de 2014 11:26
    Moderador
  • Durval tentei o que disseste

    alter table tb_FichaP add FP int identity(1,1)
    go

    nao funcionou deu este erro

    Msg 2744, Level 16, State 2, Line 1
    Multiple identity columns specified for table 'tb_FichaP'. Only one identity column per table is allowed.

    sexta-feira, 27 de junho de 2014 09:06
  • Durval tentei o que disseste

    alter table tb_FichaP add FP int identity(1,1)
    go

    nao funcionou deu este erro

    Msg 2744, Level 16, State 2, Line 1
    Multiple identity columns specified for table 'tb_FichaP'. Only one identity column per table is allowed.

    GilBlazer,

    Você vai precisar substituir o seu campo IDENTITY atual por um novo campo.

    Lembre-se sempre de realizar um backup de seu banco de dados antes de realizar operações como esta.

    Siga os passos:

    1 - Adicione uma nova coluna;

    2 - Atualize os dados da atual coluna IDENTITY (ID_PROCESS) na nova coluna e realize os ajustes de dados, como necessário;

    3 - Remova a coluna (ID_PROCESS);

    4 - Adicione o IDENTITY na sua nova coluna

     

    Este mesmo problema que você tem foi resolvido no Fórum Americano, veja o link abaixo:

    http://social.msdn.microsoft.com/Forums/sqlserver/en-US/60925514-149c-4483-965f-5fd393812158/remove-identity-column-without-loosing-any-data

    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 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    • Marcado como Resposta GILBLAZER sábado, 28 de junho de 2014 10:58
    • Não Marcado como Resposta GILBLAZER sábado, 28 de junho de 2014 10:59
    sexta-feira, 27 de junho de 2014 11:41
    Moderador