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.