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

Subplots en Matplotlib: cómo organizar múltiples gráficos en una sola figura

Llevas un rato analizando datos y tienes cuatro gráficos abiertos en ventanas separadas: ventas, usuarios,…

5 horas ago

Síndrome del objeto brillante en ciencia de datos: el error simétrico a los costes hundidos

Hace poco publiqué una entrada en la que trataba de un sesgo bien documentado: aferrarse…

5 días ago

De la Regresión Logística al Scorecard: La Transformación Matemática

En un entrada previa explicamos qué son el WOE y el IV y por qué…

1 semana ago

Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring

Seguimos evolucionando el laboratorio de Analytics Lane y hoy lanzamos la versión 1.1, disponible en:…

1 semana ago

Interés compuesto: la fuerza que multiplica tu dinero (y los errores que la anulan)

“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…

2 semanas ago

Cómo comparar datos con barras en Matplotlib: agrupadas, apiladas y porcentuales

Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…

2 semanas ago

This website uses cookies.