Cómo crear un identificador secuencial en una tabla de SQL Server

Cómo crear un identificador secuencial en una tabla de SQL Server Carlos 3 Abril, 2020 - 18:57

Para crear un identificador único de secuencia en una tabla de SQL Server lo más sencillo es definir un campo de tipo Identity, y que se vaya generando sólo, pero si no se puede utilizar esta solución, o no es apropiada para un caso concreto, una solución muy sencilla para informar de manera puntual un campo con un número secuencial para cada fila es utlizar ROW_NUMBER() OVER para generar esa secuencia.

Si, por ejemplo, queremos generar estos identificadores consecutivos para todas las filas de una tabla 'MyTable' en un campo 'MyRow_id' , sólo tenemos que hacer algo así:

-- Update MyRow_id with a sequential identifier

;WITH TableRanked AS(
SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) as rownumber, 
       MyRow_id
FROM MyTable
) 
UPDATE TableRanked SET MyRow_id=rownumber
OPTION (MAXDOP 1)

Esta sería una solución puntual, otra cosa es si se desea mantener este campo actualizado..