sp_pkeys (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)Warehouse in Microsoft Fabric

Возвращает сведения о первичном ключе заданной таблицы в текущей среде.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

[ ] @table_name= 'name'
Таблица, для которой возвращаются сведения. имяsysname, без значения по умолчанию. Сопоставление по шаблону не поддерживается.

[ ] @table_owner= "владелец"
Задает владельца указанной таблицы. владелец имеет имя sysname с значением NULL по умолчанию. Сопоставление по шаблону не поддерживается. Если владелец не указан, применяются правила видимости таблицы по умолчанию для базовых СУБД.

В SQL Server, если текущий пользователь владеет таблицей с указанным именем, возвращаются столбцы этой таблицы. Если владелец не указан, а текущий пользователь не владеет таблицей с указанным именем, эта процедура ищет таблицу с указанным именем, принадлежащим владельцу базы данных. Если такая таблица существует, возвращаются ее столбцы.

[ ] @table_qualifier= 'qualifier'
Квалификатор таблицы. квалификаторsysname с значением NULL по умолчанию. Различные продукты СУБД поддерживают трехкомпонентное именование таблиц (квалификатор).владелец.имя). В SQL Server этот столбец представляет имя базы данных. В некоторых СУБД он представляет имя сервера в среде базы данных, в которой находится таблица.

Значения кода возврата

нет

Результирующие наборы

Имя столбца Тип данных Description
TABLE_QUALIFIER sysname Имя квалификатора таблицы. Это поле может иметь значение NULL.
TABLE_OWNER sysname Имя владельца таблицы. Это поле всегда возвращает значение.
TABLE_NAME sysname Имя таблицы. В SQL Server этот столбец представляет имя таблицы, как указано в таблице sysobjects. Это поле всегда возвращает значение.
COLUMN_NAME sysname Возвращаются имена всех столбцов в таблице TABLE_NAME. В SQL Server этот столбец представляет имя столбца, указанное в таблице sys.columns. Это поле всегда возвращает значение.
KEY_SEQ smallint Порядковый номер столбца в первичном ключе, состоящем из нескольких столбцов.
PK_NAME sysname Идентификатор первичного ключа. Возвращает NULL, если не применим к источнику данных.

Замечания

Процедура sp_pkeys возвращает сведения о столбцах, явно указанных в ограничении ПЕРВИЧНЫЙ КЛЮЧ. Так как не все системы поддерживают явно именованные первичные ключи, средство реализации шлюза определяет, что представляет собой первичный ключ. Обратите внимание на то, что под первичным ключом понимается логический первичный ключ таблицы. Предполагается, что для каждого логического первичного ключа определен уникальный индекс. Этот уникальный индекс возвращает хранимая процедура sp_statistics.

Хранимая процедура sp_pkeys эквивалентна SQLPrimaryKeys в ODBC. Результаты упорядочиваются по столбцам TABLE_QUALIFIER, TABLE_OWNER, TABLE_NAME и KEY_SEQ.

Разрешения

Необходимо разрешение SELECT для схемы.

Примеры

В следующем примере возвращается первичный ключ таблицы HumanResources.Department в базе данных AdventureWorks2022.

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

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

В следующем примере возвращается первичный ключ таблицы DimAccount в базе данных AdventureWorksPDW2012. Он возвращает нулевые строки, указывающие, что в таблице нет первичного ключа.

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

См. также

Хранимые процедуры каталога (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)