[CODE] Cómo obtener la llave primaria de una tabla

Obtener la llave primaria de una tabla

Normalmente y una de las primeras (además de ser la forma en que funciona para todas las versiones), dado que usa las consultas estándard INFORMATION_SCHEMA, es la que se presenta a continuación:

declare @Keys varchar(8000)

set @Keys = '' --Se estable a cadena vacía porque si deja en nulo el resultado final sería nulo

SELECT @Keys = @Keys + COALESCE(isc.COLUMN_NAME + ',' , '') FROM 
INFORMATION_SCHEMA.COLUMNS AS isc INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
AS kcs ON isc.TABLE_NAME = kcs.TABLE_NAME AND isc.COLUMN_NAME = kcs.COLUMN_NAME 
AND LEFT(kcs.CONSTRAINT_NAME, 2) = 'PK'

print @Keys --Presenta las llaves separadas por coma

Otra consulta, en la que se usa la metadata de la base de datos es: (y la recomendada):

SELECT i.name AS IndexName,
OBJECT_NAME(ic.OBJECT_ID) AS TableName,
COL_NAME(ic.OBJECT_ID,ic.column_id) AS ColumnName
FROM sys.indexes AS i 
INNER JOIN sys.index_columns AS ic ON i.OBJECT_ID = ic.OBJECT_ID AND i.index_id = ic.index_id and i.is_primary_key = 1 

El uso de la primera o la segunda estará determinado por la versión de sql y qué tan estándard es la solución que se esté desarrollando

Espero sea de ayuda,

FREDY LEANDRO ANGARITA CASTELLANOS
Sql Server MVP

2 comentarios en “[CODE] Cómo obtener la llave primaria de una tabla”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *