none
ADICIONAR COLUNA DE CHAVE PRIMARIA EM TABELA JA POPULADA RRS feed

  • Pergunta

  • SOU NOVATO EM SQL SERVER E ESTOU PRECISANDO DE AJUDA, POSSUO VARIAS TABELAS NO BANCO COM VARIOS REGISTROS E QUERIA ADICIONAR UMA CHAVE PRIMARIA, OS REGISTROS AS TABELAS JA ESTAO TODAS POPULADAS, APENAS QUERIA A CHAVE, EXEMPLO O PRIMEIRO REGISTRO POSSUIR A CHAVE 1 , O SEGUNDO A CHAVE 2 , E ASSIM SUCESSIVAMENTE.
    TENTEI DE TODOS OS JEITOS E NÃO CONSEGUI, AS TABELAS JA ESTAO POPULADAS E NÃO SEI UM JEITO DE FAZER
    GRATO
    sábado, 4 de fevereiro de 2012 22:27

Respostas

  • Olá thisderb,

    Segue abaixo um exemplo:

    ALTER TABLE SUA_TABELA
    ADD ID INT IDENTITY(1,1)  PRIMARY KEY
    


    Por padrão o SQL Server irá inserir a coluna nova após as demais, acredito que não haja um mecanismo para adicionar a coluna em uma posição específica de forma automática, posso estar enganado, preciso dar uma pesquisada.

    Espero que ajude.


    David Silva | MCITP| MCTS | MCP | ITILF | Blog: http://tilive.wordpress.com
    • Marcado como Resposta Eder Costa terça-feira, 28 de fevereiro de 2012 13:46
    domingo, 5 de fevereiro de 2012 04:00

Todas as Respostas

  • Olá thisderb,

    Segue abaixo um exemplo:

    ALTER TABLE SUA_TABELA
    ADD ID INT IDENTITY(1,1)  PRIMARY KEY
    


    Por padrão o SQL Server irá inserir a coluna nova após as demais, acredito que não haja um mecanismo para adicionar a coluna em uma posição específica de forma automática, posso estar enganado, preciso dar uma pesquisada.

    Espero que ajude.


    David Silva | MCITP| MCTS | MCP | ITILF | Blog: http://tilive.wordpress.com
    • Marcado como Resposta Eder Costa terça-feira, 28 de fevereiro de 2012 13:46
    domingo, 5 de fevereiro de 2012 04:00
  • Olá thisderb,

    Você tem certeza que as tabelas já não possuem uma chave primária? Pois apenas uma chave primaria pode existir por tabela.

    Caso não exista uma chave o comando para criar um campo ID, e torna-lo uma PK seria:

    ALTER TABLE [TABELA] ADD INT IDENTITY(1,1) PRIMARY KEY

    Porém, se você apenas precisa criar um identificador único e sequencial para esta tabela, basta você omitir o novo campo como Primary key.

    ALTER TABLE [TABELA] ADD INT IDENTITY(1,1) 

    Espero ter ajudado.

    terça-feira, 7 de fevereiro de 2012 18:27
  • Este exemplo adiciona uma nova coluna a direita da tabela.

    Executei o comando 'FIRST' para addicionar uma coluna a esquerda, mas este não é reconhecido no MSSQL.

    Exemplo:

    ALTER TABLE SUA_TABELA
    ADD ID INT IDENTITY(1,1)  PRIMARY KEY FIRST

    Como podemos adicionar uma coluna a direita da tabela?

    segunda-feira, 27 de fevereiro de 2017 20:48
  • Thisderb,

    Mas qual é o problema, criar a coluna chave já com os registros? Ou adicionar a propriedade de primary key em uma coluna já existente?


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 28 de fevereiro de 2017 20:24
  • Este post é de 2012, mas acredito que alguns ainda tenham dúvida quanto a posicionar campo no SQLServer. No MySQL é possível usar a palavra reservada FIRST, para que o campo adicionado seja o primeiro da entidade. No SQL Server  isso não funciona, porém há uma outra forma simples de se fazer isso. Ao adicionar o novo campo basta você ir no menu Ferramentas do SSMS (SQLServer Management Studio) clicar em Opções em seguida Designers. Desmarque a opção "Evitar salvar alterações que exijam recriação de tabela". Esta opção faz com que possa inserir o "auto_increment" usado no Mysql, que no caso do SQL Server é a configuração "Especificação da tabela" que você tem acesso ao editar no modo design a mesma. Ao ativar (com dois cliques no campo "É identidade") a mesma tornará o campo como auto incremento, iniciando em 1 e incrementando em 1, utilizando DDL seria o identity(1,1)

    Para posicionar o campo como o primeiro da tabela, basta clicar sobre ele e arrastar até a primeira posição.

    Espero que ajude aos que passarem por aqui...

    Cordialmente,

    Vitor Russi

    domingo, 29 de abril de 2018 19:03