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 по умолчанию.
Значения кода возврата
нет
Результирующие наборы
Различные продукты СУБД поддерживают трехкомпонентное именование таблиц (каталог).схема.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. |
ОТСРОЧКА | 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)
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по