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


sp_foreignkeys (Transact-SQL)

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

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

Синтаксис

sp_foreignkeys [ @table_server = ] 'table_server' 
     [ , [ @pktab_name = ] 'pktab_name' ] 
     [ , [ @pktab_schema = ] 'pktab_schema' ] 
     [ , [ @pktab_catalog = ] 'pktab_catalog' ] 
     [ , [ @fktab_name = ] 'fktab_name' ] 
     [ , [ @fktab_schema = ] 'fktab_schema' ] 
     [ , [ @fktab_catalog = ] 'fktab_catalog' ]

Аргументы

  • [ @table_server = ] 'table_server'
    Имя связанного сервера, для которого необходимо вернуть сведения о таблице. Аргумент table_server имеет тип sysname и не имеет значения по умолчанию.

  • [ @pktab_name = ] 'pktab_name'
    Имя таблицы с первичным ключом. Аргумент pktab_name имеет тип sysname и значение по умолчанию NULL.

  • [ @pktab_schema = ] 'pktab_schema'
    Имя схемы с первичным ключом. Аргумент pktab_schema имеет тип sysname и значение по умолчанию NULL. В SQL Server 2008 здесь содержится имя владельца.

  • [ @pktab_catalog = ] 'pktab_catalog'
    Имя каталога с первичным ключом. Аргумент pktab_catalog имеет тип sysname и значение по умолчанию NULL. В SQL Server здесь содержится имя базы данных.

  • [ @fktab_name = ] 'fktab_name'
    Имя таблицы с внешним ключом. Аргумент fktab_name имеет тип sysname и значение по умолчанию NULL.

  • [ @fktab_schema = ] 'fktab_schema'
    Имя схемы с внешним ключом. Аргумент fktab_schema имеет тип sysname и значение по умолчанию NULL.

  • [ @fktab_catalog = ] 'fktab_catalog'
    Имя каталога с внешним ключом. Аргумент fktab_catalog имеет тип sysname и значение по умолчанию NULL.

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

Отсутствует

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

Различные продукты СУБД поддерживают трехкомпонентные имена для таблиц (каталог**.схема.**таблица), которые представлены в результирующем наборе.

Имя столбца

Тип данных

Описание

PKTABLE_CAT

sysname

Каталог для таблицы, в котором находится первичный ключ.

PKTABLE_SCHEM

sysname

Схема для таблицы, в которой находится первичный ключ.

PKTABLE_NAME

sysname

Имя таблицы (с первичным ключом). Данное поле обязательно возвращает какое-либо значение.

PKCOLUMN_NAME

sysname

Имя столбца или столбца первичного ключа, для каждого возвращаемого столбца TABLE_NAME. Данное поле обязательно возвращает какое-либо значение.

FKTABLE_CAT

sysname

Каталог для таблицы, в котором находится внешний ключ.

FKTABLE_SCHEM

sysname

Схема для таблицы, в которой находится внешний ключ.

FKTABLE_NAME

sysname

Имя таблицы (с внешним ключом). Данное поле обязательно возвращает какое-либо значение.

FKCOLUMN_NAME

sysname

Имя столбцов внешнего ключа для каждого возвращаемого столбца TABLE_NAME. Данное поле обязательно возвращает какое-либо значение.

KEY_SEQ

smallint

Порядковый номер столбца в многостолбцовом первичном ключе. Данное поле обязательно возвращает какое-либо значение.

UPDATE_RULE

smallint

Действие, совершаемое над внешним ключом, когда операция SQL является операцией обновления. SQL Server возвращает 0, 1 или 2 для этих столбцов.

0=CASCADE; каскадное изменение в соответствии с внешним ключом.

1=NO ACTION; отсутствие изменений при наличии внешнего ключа.

2=SET_NULL; установка значения внешнего ключа в NULL.

DELETE_RULE

smallint

Действие, совершаемое над внешним ключом, когда операция SQL является операцией удаления. SQL Server возвращает 0, 1 или 2 для этих столбцов.

0=CASCADE; каскадное изменение в соответствии с внешним ключом.

1=NO ACTION; отсутствие изменений при наличии внешнего ключа.

2=SET_NULL; установка значения внешнего ключа в NULL.

FK_NAME

sysname

Идентификатор внешнего ключа. Принимает значение NULL в случае неприменимости к источнику данных. SQL Server возвращает имя ограничения FOREIGN KEY.

PK_NAME

sysname

Идентификатор первичного ключа. Принимает значение NULL в случае неприменимости к источнику данных. SQL Server возвращает имя ограничения PRIMARY KEY.

DEFERRABILITY

smallint

Указывает, допускается ли задержка проверки ограничений.

В результирующем наборе столбцы FK_NAME и PK_NAME всегда возвращают NULL.

Замечания

Процедура sp_foreignkeys запрашивает набор строк FOREIGN_KEYS в интерфейсе IDBSchemaRowset поставщика OLE DB, соответствующего table_server. Аргументы table_name, table_schema, table_catalog и column передаются в данный интерфейс для ограничения числа возвращаемых строк.

Разрешения

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

Примеры

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

EXEC sp_foreignkeys @table_server = N'Seattle1', 
   @pktab_name = N'Department', 
   @pktab_catalog = N'AdventureWorks'