Obtener la clave primaria de una Tabla en SQL Server

Imaginemos 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)
Photo by Caspar Camille Rubin on Unsplash

--

--

Juan Carlos Heredia

Platform & DevOps Engineer. A fan of technology, photography and music. Stay positively charged ⚡️🔋