Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wawaanjo

Alterar chave de uma tabela (Possível?)

Recommended Posts

É possível alterar chave de uma tabela?

 

Minha tabela tem os seguintes campos como chave:

 

PK_BASE_OFENSORES

columns: ANO, MES, GERENCIA, NOME_FORMULARIO, ID_AVALIACAO, ITEM_PONTUADO

 

 

CONSTRAINT "PK_BASE_OFENSORES" PRIMARY KEY ("ANO", "MES", "GERENCIA", "NOME_FORMULARIO", "ID_AVALIACAO", "ITEM_PONTUADO")

 

 

O fato é que preciso add um campo novo a essa tabela e esse campo novo deve entrar nessa chave, pois preciso de todos esses campos para garantir a unicidade das linhas na tabela.

 

Preciso add o campo 'Comentario'.

 

incluir o campo eu consegui. O que não consegui ainda é colocar o campo p/ fazer parte da chave.

 

 

Segue o que fiz:

Alter Table Base_ofensores Add Constraints Comentario_FK Foreign Key(Comentario) References Base_ofensores(ANO, MES, GERENCIA, NOME_FORMULARIO, ID_AVALIACAO, ITEM_PONTUADO);

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 COMENTARIO não me parece ser uma boa chave candidata para ser PK ...

 

..... Mas , para mudar uma PK eu faço :

 

Levantar as FKs que usam esta PK, use a USER_CONSTRAINTS para isto

Verifique se a nova PK é única para todos os registros

 

DROPE AS FKS

DROPE A PK

RECRIE A PK

RECRIE AS FKS

 

Não esquecendo de rever todas as procedures,functions etc que fazem referencia a estas tabelas.

Rever os índices.

 

Fora as aplicações de front-end que precisariam ser revistas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Motta

 

Realmente não é comum um campo 'Comentário' ser usado na chave, porém esse campo é vai vai garantir a unicidade da informação. Nesta tabela, praticamente todos os campos se repetem.

 

É uma tabela nova (ainda não utilizada em nenhum processo), porém já tem dados. E pra não ter que deletar e dropar tudo, eu queria alterar.

 

Obrigado pelas dicas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pensou na hipótese de ter uma chave artificial povoada por sequence ?

 

A PK atual seria um index não único.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Observação , não precisa deletar dados na tabela só as CONSTRAINTS !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não havia pensado na Sequence. Acho que p/ meu caso onde tenho uma tabela onde quase todos os campos se repetem, é a melhor opção mesmo, colocar uma sequence e este ser a PK da tabela.

 

Mais uma vez, obrigado pela dica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.