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


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, принадлежащую владельцу базы данных. При обнаружении таблицы возвращаются ее столбцы.

  • [ @pktable_qualifier = ] 'qualifier'
    Квалификатор таблицы. Аргумент qualifier имеет тип sysname и значение по умолчанию NULL. Различные продукты СУБД поддерживают имена таблиц из трех частей (квалификатор**.владелец.**имя). В 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.

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

Разрешения

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

Примеры

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

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

См. также

Справочник

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

Справка и поддержка

Получение помощи по SQL Server 2005