Usuário com melhor resposta
PK IDENTITY NÃO SEGUE A SEQUENCIA POR ORDEM

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.
Respostas
-
Deleted
- Marcado como Resposta Giovani Cr quarta-feira, 23 de abril de 2014 19:23
-
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 RamosMicrosoft 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
Todas as Respostas
-
Deleted
- Marcado como Resposta Giovani Cr quarta-feira, 23 de abril de 2014 19:23
-
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.
-
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 RamosMicrosoft 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
-
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. -
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:
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"