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

¿Cómo agregar identidad a la columna en SQL Server?

no puedes añadir IDENTITY a una columna existente. Simplemente no se puede hacer.

Tendrás que crear una nueva columna de tipo INT IDENTITY y luego suelte la columna anterior que ya no necesita (y posiblemente cambie el nombre de la nueva columna al nombre anterior, si es necesario)

Además:yo no haga esto en el diseñador visual:intentará recrear la tabla con la nueva estructura, copie todos los datos (los 10 millones de filas) y luego suelte la tabla anterior.

Es mucho más eficiente usar declaraciones T-SQL directas:esto hará una actualización "in situ", no destructiva (no se perderán datos), y no necesita copiar alrededor de 10 millones de filas en el proceso...

ALTER TABLE dbo.YourTable
  ADD NewID INT IDENTITY(1,1) NOT NULL

Cuando agrega una nueva columna de tipo INT IDENTITY a su tabla, entonces se completará automáticamente con números consecutivos. No puede evitar que esto suceda y tampoco puede actualizar los valores más adelante.

Ninguna de esas opciones es realmente muy útil, al final, es posible que termine con diferentes valores de ID... para hacer esto correctamente, tendría que:

  • cree la nueva tabla con anticipación, con la estructura adecuada y la IDENTITY ya en su lugar
  • luego active SET IDENTITY_INSERT (yourtable) ON en esa tabla para permitir que se inserten valores en la columna de identidad
  • copia estos datos de la fuente original
  • desactivar inserción de identidad nuevamente:SET IDENTITY_INSERT (yourtable) OFF

Solo con este enfoque podrá obtener las mismas ID en una columna IDENTIDAD en su nueva tabla.