sp_pkeys (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Almacenamiento en Microsoft Fabric

Devuelve la información de clave principal de una única tabla en el entorno actual.

Convenciones de sintaxis de Transact-SQL

Sintaxis

-- Syntax for SQL Server, Azure SQL Database, Azure Synapse Analytics, Parallel Data Warehouse  
  
sp_pkeys [ @table_name = ] 'name'       
    [ , [ @table_owner = ] 'owner' ]   
    [ , [ @table_qualifier = ] 'qualifier' ]  

Argumentos

[ @table_name= ] "name"
Es la tabla de la que se devuelve información. name es de tipo sysname y no tiene valor predeterminado. No se admite la coincidencia de patrón de caracteres comodín.

[ @table_owner= ] "owner"
Especifica el propietario de la tabla especificada. owner es de tipo sysname y su valor predeterminado es NULL. No se admite la coincidencia de patrón de caracteres comodín. Si owner no se especifica, se aplican las reglas de visibilidad de tabla predeterminadas del DBMS subyacente.

En SQL Server, si el usuario actual posee una tabla con el nombre especificado, se devuelven las columnas de esa tabla. Si no se especifica owner y el usuario actual no es el propietario de una tabla con el valor de name especificado, este procedimiento busca una tabla con el nombre especificado que pertenezca al propietario de la base de datos. Si existe una, se devuelven las columnas de esa tabla.

[ @table_qualifier= ] "qualifier"
Es el calificador de la tabla. qualifier es de tipo sysname y su valor predeterminado es NULL. Varios productos de DBMS admiten en las tablas nombres formados por tres partes: (qualifier.owner.name). En SQL Server, esta columna representa el nombre de la base de datos. En algunos productos, representa el nombre del servidor del entorno de base de datos de la tabla.

Valores de código de retorno

None

Conjuntos de resultados

Nombre de la columna Tipo de datos Descripción
TABLE_QUALIFIER sysname Nombre del calificador de tabla. Este campo puede ser NULL.
TABLE_OWNER sysname Nombre del propietario de la tabla. Este campo siempre devuelve un valor.
TABLE_NAME sysname Nombre de la tabla. En SQL Server, esta columna representa el nombre de la tabla como se muestra en la tabla sysobjects. Este campo siempre devuelve un valor.
COLUMN_NAME sysname Nombre de la columna, para cada columna de TABLE_NAME devuelta. En SQL Server, esta columna representa el nombre de la columna como se muestra en la tabla sys.columns. Este campo siempre devuelve un valor.
KEY_SEQ smallint Número de secuencia de la columna en una clave principal con varias columnas.
PK_NAME sysname Identificador de la clave principal. Devuelve NULL si no es aplicable al origen de datos.

Observaciones

sp_pkeys devuelve información acerca de las columnas definidas explícitamente con una restricción PRIMARY KEY. Debido a que no todos los sistemas aceptan claves principales con nombre explícito, el implementador de puerta de enlace determina qué constituye una clave principal. Observe que el término clave principal hace referencia a la clave principal lógica de una tabla. Se espera que cada clave enumerada como clave principal lógica tenga un índice único definido en la misma. Este índice único también se devuelve en sp_statistics.

El procedimiento almacenado sp_pkeys es equivalente a SQLPrimaryKeys en ODBC. Los resultados devueltos se ordenan por TABLE_QUALIFIER, TABLE_OWNER, TABLE_NAME y KEY_SEQ.

Permisos

Es necesario contar con un permiso de tipo SELECT sobre el esquema.

Ejemplos

En el siguiente ejemplo se recupera la clave principal de la tabla HumanResources.Department de la base de datos AdventureWorks2022.

USE AdventureWorks2022;  
GO  
EXEC sp_pkeys @table_name = N'Department'  
    ,@table_owner = N'HumanResources';  

Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

En el siguiente ejemplo se recupera la clave principal de la tabla DimAccount de la base de datos AdventureWorksPDW2012. Devuelve cero filas, lo que indica que la tabla no tiene una clave principal.

-- Uses AdventureWorksPDW
  
EXEC sp_pkeys @table_name = N'DimAccount';  

Consulte también

Procedimientos almacenados del catálogo (Transact-SQL)
Procedimientos almacenados del sistema (Transact-SQL)