T-SQL: Obtener la clave primaria de una Tabla

Imaginémonos el siguiente caso en el SQL Server. Sabemos el nombre de la tabla y queremos conseguir la columna o columnas que forman la clave primaria mediante T-SQL.

Esto es posible hacerlo utilizando las siguientes tablas del sistema:

  • sysobjects – para todos los objetos de la base de datos.
  • sysindexkeys – Para los índices y las claves.
  •  syscolumns – Para las columnas de las tablas.

La sentencia T-SQL sería así:

DECLARE @table_name nvarchar(20)
SET @table_name = 'aspnet_Membership'

SELECT [name]
FROM syscolumns 
WHERE [id] IN (
    SELECT [id] FROM sysobjects 
    WHERE [name] = @table_name )
    AND colid IN (
    SELECT SIK.colid 
    FROM sysindexkeys SIK JOIN sysobjects SO ON SIK.[id] = SO.[id]
    WHERE SIK.indid = 1 AND SO.[name] = @table_name )

Para probarlo basta con cambiar el nombre de la varia @table_name por el nombre de la tabla de la que queremos obtener la clave primaria.