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.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.