Herramientas

Agregar un ID en una tabla en SQL Server existente asignando un valor autonumérico

En las tablas de las bases de datos, a menudo nos podemos encontrar con la necesidad de disponer de un ID único para identificar cada de las filas. Si la tabla contiene un ID, todo está bien, pero puede ser que no se hubiese incluido en su diseño. Los ID únicos son necesarios para múltiples aplicaciones, desde mejorar la capacidad de búsqueda hasta la manipulación de datos. En esta entrada, se explicará cómo agregar un ID en una tabla de SQL Server existentes utilizando para ello la función ROW_NUMBER().

Planteamiento del problema

Si se necesita un ID para trabajar con una tabla de una base de datos, lo normal es incluir este en la fase de diseño. Pero no siempre es así. Puede ser que al diseñar la base de datos no fuese necesario este campo o que la tabla sea heredada.

Imaginemos que tenemos la TablaOriginal en una base de datos SQL Server. Esta tabla contiene datos con los que es necesario trabajar, pero no contiene un identificador único para cada una de las filas. Lo que es un obstáculo si se desea actualizar los valores. La solución es agregar un ID, para lo que se puede usar la función ROW_NUMBER().

Solución: Creando un ID autonumérico con ROW_NUMBER()

La función ROW_NUMBER() de SQL Server permite asignar un número de fila único a cada uno de los resultados de una consulta. Siendo especialmente útil para la creación de identificadores únicos. Así, para la creación de un ID único en la tabla TablaOriginal se puede usar la siguiente consulta:

SELECT
    ROW_NUMBER() OVER (ORDER BY columna_orden) AS ID,
    *
INTO TablaConID
FROM TablaOriginal;

En donde:

  • ROW_NUMBER() asigna un número de fila único a cada fila de TablaOriginal.
  • ORDER BY columna_orden especifica el orden en el que se enumeran las filas. Reemplazado columna_orden por la columna que se desea usar para la ordenación.
  • INTO TablaConID crea una nueva tabla llamada TablaConID que contiene el ID autonumérico junto con todas las columnas de TablaOriginal.

Creación de una vista con el ID autonumérico:

Si no se puede, o no se quiere crear una tabla con una copia de los datos originales, también se puede crear una vista para obtener una versión de TablaOriginal con un ID. La forma más sencilla para conseguir esto es ejecutando una consulta como el que se muestra a continuación:

CREATE VIEW VistaConID AS
SELECT
    ROW_NUMBER() OVER (ORDER BY columna_orden) AS ID,
    *
FROM TablaOriginal;

La vista VistaConID es una forma alternativa para acceder los datos de TablaOriginal con un ID autonumérico sin la necesidad de copiar los datos. Aunque, al ser una vista, puede tener algunos problemas de rendimiento respecto a una tabla. Además, se debe tener en cuenta que en la vista los valores de los ID pueden cambiarán cuando se agregan o eliminan datos en TablaOriginal.

Conclusiones

En esta entrada se han visto dos opciones para agregar un ID en una tabla en SQL Server existente. Usando en ambos casos la función ROW_NUMBER(). En primer lugar, se puede crear una nueva tabla con una consulta en la que se agrega esta función, lo que obliga a copiar todos los datos de la tabla original. Si no se desea, o no es posible, copiar los datos, se puede crear una vista con la misma consulta para obtener una versión de la tabla original con un ID autonumérico.

Imagen de bvick390 en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…

2 días ago

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

En la serie Creación de una API REST con Express y TypeScript construimos una API…

4 días ago

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…

1 semana ago

Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows

En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…

2 semanas ago

La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento

Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…

2 semanas ago

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…

3 semanas ago

This website uses cookies.