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)