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

Adicionando uma identidade a uma coluna existente


Você não pode alterar as colunas existentes para identidade.

Você tem 2 opções,

  1. Crie uma nova tabela com identidade e elimine a tabela existente

  2. Crie uma nova coluna com identidade e solte a coluna existente

Abordagem 1. (Nova tabela ) Aqui você pode reter os valores de dados existentes na coluna de identidade recém-criada. Observe que você perderá todos os dados se 'se não existir' não for satisfeito, portanto, certifique-se de colocar a condição na queda também!
CREATE TABLE dbo.Tmp_Names
    (
      Id int NOT NULL
             IDENTITY(1, 1),
      Name varchar(50) NULL
    )
ON  [PRIMARY]
go

SET IDENTITY_INSERT dbo.Tmp_Names ON
go

IF EXISTS ( SELECT  *
            FROM    dbo.Names ) 
    INSERT  INTO dbo.Tmp_Names ( Id, Name )
            SELECT  Id,
                    Name
            FROM    dbo.Names TABLOCKX
go

SET IDENTITY_INSERT dbo.Tmp_Names OFF
go

DROP TABLE dbo.Names
go

Exec sp_rename 'Tmp_Names', 'Names'

Abordagem 2 (Nova coluna ) Você não pode reter os valores de dados existentes na coluna de identidade recém-criada. A coluna de identidade conterá a sequência de números.
Alter Table Names
Add Id_new Int Identity(1, 1)
Go

Alter Table Names Drop Column ID
Go

Exec sp_rename 'Names.Id_new', 'ID', 'Column'

Consulte a seguinte postagem do Fórum do Microsoft SQL Server para obter mais detalhes:

Como alterar a coluna para a identidade (1,1)