jueves, 6 de noviembre de 2014

WP - SQL Server Snippets – Tablas con columna autonumérica

Este primer snippet consiste en una consulta para obtener las tablas de la base de datos en uso (es decir, la base de datos seleccionada actualmente), que poseen una columna autonumerada (IDENTITY), incluyendo el nombre de dicha columna.

La consulta en T-SQL es la siguiente:

USE [BASE_DATOS]
GO
 
SELECT
TABLA.object_id                                    AS object_id,
SCHEMA_NAME(TABLA.schema_id) + '.' + TABLA.name    AS tabla,
COLUMNA.name                                    AS columna_identity
FROM sys.tables TABLA
INNER JOIN sys.columns COLUMNA ON COLUMNA.object_id=TABLA.object_id
WHERE TABLA.type='U'
AND TABLA.name NOT LIKE 'sys%'
AND COLUMNA.is_identity = 1
ORDER BY SCHEMA_NAME(TABLA.schema_id), TABLA.name

A modo de una pequeña descripción, básicamente lo que se hace es consultar las tablas del sistema sys.tables (que contiene información de las tablas), y sys.columns (que contiene información de las columnas). Ambas tablas se unen a través del object_id de la tabla.

Luego, en la cláusula WHERE se filtran los resultados para solamente incluir tablas creadas por el usuario (tipo “U” y que no inicien con “sys”, para descartar la tabla sys.diagrams), y de dichas tablas solamente tomar las columnas con la propiedad IDENTITY (is_identity = 1). Cabe señalar que una tabla en SQL Server puede tener solamente una columna IDENTITY, por lo que la consulta no devolverá más de una fila por tabla.

Nótese además que se obtiene el nombre del esquema de la tabla, a través de la función SCHEMA_NAME, y se concatena con el nombre de la tabla, para obtener el nombre completo de la tabla dentro de la base de datos.

Finalmente, y de forma opcional, se ordenan los resultados por esquema y nombre de tabla, para que se muestren de la misma forma que se muestran en el explorador de objetos del SQL Server Management Studio.

Hasta donde he probado, el script funciona para SQL Server 2005 – 2012.

Espero que les sea de utilidad. Saludos, y como dicen por allí, “happy coding!”.

Related Articles

0 comentarios:

Publicar un comentario

Con la tecnología de Blogger.