Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como adicionar identidade à coluna no SQL Server?


Você não pode adicionar IDENTITY para uma coluna existente. Simplesmente não pode ser feito.

Você precisará criar um novo coluna do tipo INT IDENTITY e, em seguida, solte a coluna antiga que você não precisa mais (e possivelmente renomeie a nova coluna para o nome antigo - se for necessário)

Além disso:eu não faça isso no designer visual - isso tentará recriar a tabela com a nova estrutura, copiar todos os dados (todas as 10 milhões de linhas) e, em seguida, elimine a tabela antiga.

É muito mais eficiente usar instruções T-SQL diretas - isso fará uma atualização "in-loco", não destrutiva (nenhum dado é perdido) e não precisa copiar cerca de 10 milhões de linhas no processo...
ALTER TABLE dbo.YourTable
  ADD NewID INT IDENTITY(1,1) NOT NULL

Quando você adiciona uma nova coluna do tipo INT IDENTITY à sua mesa, então ela será preenchida automaticamente com números consecutivos. Você não pode impedir que isso aconteça e também não pode atualizar os valores posteriormente.

Nenhuma dessas opções é realmente muito útil, no final - você pode acabar com valores de ID diferentes...
  • crie a nova tabela com antecedência, com a estrutura adequada e a IDENTITY já está em vigor
  • e ative SET IDENTITY_INSERT (yourtable) ON nessa tabela para permitir que os valores sejam inseridos na coluna de identidade
  • copie esses dados da fonte original
  • desative a inserção de identidade novamente:SET IDENTITY_INSERT (yourtable) OFF

Somente com essa abordagem você poderá obter os mesmos IDs em uma coluna IDENTITY em sua nova tabela.