Поделиться через


sp_pkeys (Transact-SQL)

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

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

sp_pkeys [ @table_name = ] 'name'     
      [ , [ @table_owner = ] 'owner' ] 
   [ , [ @table_qualifier = ] 'qualifier' ]

Аргументы

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

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

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

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

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

Нет

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

Имя столбца

Тип данных

Описание

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 эквивалентна ODBC-функции SQLPrimaryKeys. Результаты упорядочиваются по столбцам TABLE_QUALIFIER, TABLE_OWNER, TABLE_NAME и KEY_SEQ.

Разрешения

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

Примеры

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

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