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


sp_foreignkeys (Transact-SQL)

Область применения: SQL Server

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

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

Синтаксис

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

Аргументы

[ @table_server = ] N'table_server'

Имя связанного сервера, для которого возвращаются сведения о таблице. @table_server — sysname без значения по умолчанию.

[ @pktab_name = ] N'pktab_name'

Имя таблицы с первичным ключом. @pktab_name — sysname с значением по умолчаниюNULL.

[ @pktab_schema = ] N'pktab_schema'

Имя схемы с первичным ключом. @pktab_schema имеет имя sysname с значением по умолчаниюNULL. В SQL Server этот параметр содержит имя владельца.

[ @pktab_catalog = ] N'pktab_catalog'

Имя каталога с первичным ключом. @pktab_catalog — sysname с значением по умолчаниюNULL. В SQL Server этот параметр содержит имя базы данных.

[ @fktab_name = ] N'fktab_name'

Имя таблицы с внешним ключом. @fktab_name имеет имя sysname с значением по умолчаниюNULL.

[ @fktab_schema = ] N'fktab_schema'

Имя схемы с внешним ключом. @fktab_schema — sysname с значением по умолчаниюNULL.

[ @fktab_catalog = ] N'fktab_catalog'

Имя каталога с внешним ключом.@fktab_catalog — sysname с значением по умолчаниюNULL.

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

Нет.

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

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

Имя столбца Тип данных Description
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 запрашивает набор IDBSchemaRowset строк FOREIGN_KEYS интерфейса поставщика OLE DB, соответствующего @table_server. Параметры @table_name, @table_schema, @table_catalog и @column передаются в этот интерфейс, чтобы ограничить возвращаемые строки.

Разрешения

Требуется SELECT разрешение на схему.

Примеры

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

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