Ir para conteúdo
Fórum Script Brasil
  • 0

Criar PK tem tabela já existente


Marcelo V. V. Magalhães

Pergunta

Caro amigos,

Estou com uma necessidade de criar uma PK (sequence normal) em uma tabela já existente no MySQL 5. A minha dúvida é se eu criar uma nova coluna e configurá-la para ser uma PK da tabela o que ocorre com os registros já existente nesta tabela. O MySQL irá numerá-los automaticamente, ou só quando eu inserir novos registros? Hoje esta tabela usa uma "soma" de diversas colunas para ser a PK, o problema é que no update tenho que informar o set destes novos campos e a PK para "achar" o registro, isso está gerando um problema no código, pois ou tenho que passar dois objeto, o antigo e o novo, ou criar duplicatas dos campos que são PK no objeto. Por exemplo a data faz parte da PK e pode ser atualizada sendo assim o objeto teria data_antiga e data_nova ou passar dois objeto um sendo antigo e outro o novo.

Abraços a todos.

Marcelo Magalhães - R.J.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Caro amigos,

Estou com uma necessidade de criar uma PK (sequence normal) em uma tabela já existente no MySQL 5. A minha dúvida é se eu criar uma nova coluna e configurá-la para ser uma PK da tabela o que ocorre com os registros já existente nesta tabela. O MySQL irá numerá-los automaticamente, ou só quando eu inserir novos registros? Hoje esta tabela usa uma "soma" de diversas colunas para ser a PK, o problema é que no update tenho que informar o set destes novos campos e a PK para "achar" o registro, isso está gerando um problema no código, pois ou tenho que passar dois objeto, o antigo e o novo, ou criar duplicatas dos campos que são PK no objeto. Por exemplo a data faz parte da PK e pode ser atualizada sendo assim o objeto teria data_antiga e data_nova ou passar dois objeto um sendo antigo e outro o novo.

Abraços a todos.

Marcelo Magalhães - R.J.

Oi, Marcelo!

como definição posso dizer que função (única) de uma PK é ligar uma tabela a outra. Criar pk com chaves complexas como a sua é perigoso por causa deste tipo de problema que você está enfrentando.

Para criar uma PK auto_increment sem estragar seus dados faça assim:

1º passo desctruir a pk existente e criar um índice único com a cahe da pk atual para que seus programas não se percam.

ALTER TABLE tabela
DROP PRIMARY KEY,
ADD UNIQUE KEY nome_do_indice (campo);
2º passo criar um novo atributo auto incrementavel e uma nova PK para este atributo
ALTER TABLE tabela
ADD COLUMN nome_da_coluna INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (nome_da_coluna);

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...