
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 deTablaOriginal
.ORDER BY columna_orden
especifica el orden en el que se enumeran las filas. Reemplazadocolumna_orden
por la columna que se desea usar para la ordenación.INTO TablaConID
crea una nueva tabla llamadaTablaConID
que contiene el ID autonumérico junto con todas las columnas deTablaOriginal
.
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.
Deja una respuesta