martes, 16 de diciembre de 2008

SQLServer. Columna(s) que forman la clave principal

Hola.

Bonita y elegante SQL que, tirando de las vistas de sistema, obtiene el nombre de las columnas que componen la clave principal (primary key para los amigos) de una tabla (en este caso la tabla 'PERSONA'):

SELECT i.name AS nombre, ic.column_id as numCampo, c.name as nombreCampo
FROM (sys.indexes AS i inner join sys.index_columns AS ic on i.object_id=ic.object_id
and i.index_id=ic.index_id) inner join sys.columns c on i.object_id=c.object_id
and ic.column_id=c.column_id
where i.object_id = OBJECT_ID('dbo.PERSONA') and i.is_primary_key=1


Hale!