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


sp_pkeys (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Значок ссылки на раздел Cинтаксические обозначения в 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 возвращает сведения о столбцах, явно указанных в ограничении PRIMARY KEY. Поскольку не все системы поддерживают явно именованные первичные ключи, для определения столбцов, составляющих эти ключи, применяется специальное средство-шлюз. Обратите внимание на то, что под первичным ключом понимается логический первичный ключ таблицы. Предполагается, что для каждого логического первичного ключа определен уникальный индекс. Этот уникальный индекс также возвращает хранимая процедура sp_statistics.

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

Разрешения

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

Примеры

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

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

См. также

Справочник

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

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