sp_foreignkeys (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'
См. также