sql >> Base de Datos >  >> RDS >> Sqlserver

Agregar una identidad a una columna existente

No puede modificar las columnas existentes para la identidad.

Tienes 2 opciones,

  1. Cree una nueva tabla con identidad y suelte la tabla existente

  2. Cree una nueva columna con identidad y suelte la columna existente

Enfoque 1. (Nueva tabla ) Aquí puede conservar los valores de datos existentes en la columna de identidad recién creada. Tenga en cuenta que perderá todos los datos si "si no existe" no se cumple, ¡así que asegúrese de poner la condición en la caída también!

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'

Enfoque 2 (Nueva columna ) No puede conservar los valores de datos existentes en la columna de identidad recién creada. La columna de identidad contendrá la secuencia 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 la siguiente publicación del foro de Microsoft SQL Server para obtener más detalles:

Cómo modificar la columna a la identidad (1,1)