MODIFICAR TABELA ADICIONANDO CHAVE

WMR2018 01/02/2024 11:52:21
#502998
Bom dia pessoal,

Tenho uma tabela chamada PARCELAS, nem possuo vários campos e entre eles os campos CODIGO e NUMERO... ambos do tipo INT

Preciso criar uma rotina para executar ela e modificar a estrutura da tabela existente...
Seria colocar o campo CODIGO como CHAVE PRIMARIA que "não permite duplicidade" e o campo NUMERO ser outra CHAVE "que permite duplicidade"

Pq preciso executar em cada cliente essa rotina no MSSM de cada cliente meu
KERPLUNK 01/02/2024 12:36:05
#502999
Resposta escolhida
Se a tabela já tem dados, isso vai ser um pesadelo de fazer, porque pode ter vários duplicados lá, adicionados ao longo do tempo. Seria mais fácil incluir campos novos e uma rotina para copiar os dados, ignorando os duplicados e passando um relatório para os dados serem arrumados.
3SLUIS 01/02/2024 12:40:13
#503000
conforme o KERPLUNK falou se não tiver dados duplicados no campo CODIGO, da pra fazer conforme abaixo

ALTER TABLE PARCELAS
ADD CONSTRAINT pk_CODIGO PRIMARY KEY (codigo, numero);

e esses campos nao podem aceitar null
WMR2018 01/02/2024 16:06:00
#503001
Alterado em 01/02/2024 16:16:04 Obg KERPLUNK e 3SLUIS por responderem...

Realmente ao executar o código deparei com registros duplicados... poucos na verdade....
usei o código abaixo para consultar as duplicidades:

WITH CTE AS(
SELECT [CODIGO], [NUMERO] ,RN = ROW_NUMBER()OVER(PARTITION BY CODIGO ORDER BY CODIGO)
FROM [cyber_base].[dbo].[parcelas]
)
SELECT * FROM CTE WHERE RN > 1


Ele me listou todos os código duplicados (12 códigos).... POSTEI O RESULTADO NO ANEXO (print)

Após isso, consultei um dos código duplicado:
SELECT     * FROM         parcelas WHERE     (CODIGO = 33100)


E vi que existe 2 registros para o mesmo código, porem os campo COD_PEDIDO é diferente (vendas diferentes).
Postei o print no anexo..

Ai pensei em duas soluções:
-Poderia fazer um loop onde pegaria os código duplicados e editaria um a um registro colocando com o ultimo código da tabela parcelas e somaria com mais 1... exemplo: CODIGO + 1
ou
-Poderia fazer um loop onde pegaria os código duplicados e editaria o segundo registro de cada duplicação (que tivevesse dos 2 o maior COD_PEDIDO) colocando com o ultimo código da tabela parcelas e somaria com mais 1... exemplo: CODIGO + 1


WMR2018 01/02/2024 16:06:31
#503002
Segundo anexo
Tópico encerrado , respostas não são mais permitidas