sp_foreignkeys (Transact-SQL)

Применимо к:SQL Server

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

Соглашения о синтаксисе 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 это имя владельца.

[ @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 по умолчанию.

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

None

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

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

Имя столбца Тип данных Описание:
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.
ОТСРОЧКА smallint Указывает, допускается ли задержка проверки ограничений.

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

Замечания

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

Разрешения

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

Примеры

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

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

См. также

sp_catalogs (Transact-SQL)
sp_column_privileges (Transact-SQL)
sp_indexes (Transact-SQL)
sp_linkedservers (Transact-SQL)
sp_primarykeys (Transact-SQL)
sp_tables_ex (Transact-SQL)
sp_table_privileges (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)