sp_fkeys (Transact-SQL)
Возвращает сведения о логическом внешнем ключе для текущей среды. Эта процедура показывает связь внешнего ключа, включая отключенные внешние ключи.
Синтаксические обозначения в Transact-SQL
Синтаксис
sp_fkeys [ @pktable_name = ] 'pktable_name'
[ , [ @pktable_owner = ] 'pktable_owner' ]
[ , [ @pktable_qualifier = ] 'pktable_qualifier' ]
{ , [ @fktable_name = ] 'fktable_name' }
[ , [ @fktable_owner = ] 'fktable_owner' ]
[ , [ @fktable_qualifier = ] 'fktable_qualifier' ]
Аргументы
- [ @pktable_name = ] 'pktable_name'
Имя таблицы с первичным ключом, применяемое для возврата сведений о каталоге. Аргумент pktable_name имеет тип sysname и значение по умолчанию NULL. Сопоставление по шаблону не поддерживается. Необходимо указать этот аргумент либо аргумент fktable_name, либо оба эти аргумента.
[ @pktable_owner = ] 'pktable_owner'
Имя владельца таблицы (с первичным ключом), применяемое для возврата сведений о каталоге. Аргумент pktable_owner имеет тип sysname и значение по умолчанию NULL. Сопоставление по шаблону не поддерживается. Если аргумент pktable_owner не задан, то применяются правила видимости таблиц по умолчанию базовой СУБД.Если аргумент @pktable_owner не задан, поиск будет проводиться только в схеме dbo.
- [ @pktable_qualifier = ] 'pktable_qualifier'
Имя квалификатора таблицы (с первичным ключом). Аргумент pktable_qualifier имеет тип sysname и значение по умолчанию NULL. Некоторые СУБД поддерживают трехкомпонентные имена таблиц (qualifier.owner.name). В SQL Server квалификатор представляет собой имя базы данных. В некоторых СУБД он представляет имя сервера в среде базы данных, где находится таблица.
- [ @fktable_name = ] 'fktable_name'
Имя таблицы (с внешним ключом), применяемое для возврата сведений о каталоге. Аргумент fktable_name имеет тип sysname и значение по умолчанию NULL. Сопоставление по шаблону не поддерживается. Необходимо указать этот аргумент либо аргумент pktable_name, либо оба эти аргумента.
[ @fktable_owner = ] 'fktable_owner'
Имя владельца таблицы (с внешним ключом), применяемое для возврата сведений о каталоге. Аргумент fktable_owner имеет тип sysname и значение по умолчанию NULL. Сопоставление по шаблону не поддерживается. Если аргумент fktable_owner не задан, то применяются правила видимости таблиц по умолчанию базовой СУБД.Если аргумент @fktable_owner не задан, поиск будет проводиться только в схеме dbo.
- [ @fktable_qualifier =] 'fktable_qualifier'
Имя квалификатора таблицы (с внешним ключом). Аргумент fktable_qualifier имеет тип sysname и значение по умолчанию NULL. В SQL Server квалификатор представляет собой имя базы данных. В некоторых СУБД он представляет имя сервера в среде базы данных, где находится таблица.
Значения кодов возврата
Нет
Результирующие наборы
Имя столбца | Тип данных | Описание |
---|---|---|
PKTABLE_QUALIFIER |
sysname |
Имя квалификатора таблицы (с первичным ключом). Это поле может иметь значение NULL. |
PKTABLE_OWNER |
sysname |
Имя владельца таблицы (с первичным ключом). Это поле всегда возвращает значение. |
PKTABLE_NAME |
sysname |
Имя таблицы (с первичным ключом). Это поле всегда возвращает значение. |
PKCOLUMN_NAME |
sysname |
Имя столбцов первичного ключа для каждого столбца таблицы TABLE_NAME. Это поле всегда возвращает значение. |
FKTABLE_QUALIFIER |
sysname |
Имя квалификатора таблицы (с внешним ключом). Это поле может иметь значение NULL. |
FKTABLE_OWNER |
sysname |
Имя владельца таблицы (с внешним ключом). Это поле всегда возвращает значение. |
FKTABLE_NAME |
sysname |
Имя таблицы (с внешним ключом). Это поле всегда возвращает значение. |
FKCOLUMN_NAME |
sysname |
Имя столбца внешнего ключа для каждого столбца таблицы TABLE_NAME. Это поле всегда возвращает значение. |
KEY_SEQ |
smallint |
Порядковый номер столбца в первичном ключе, состоящем из нескольких столбцов. Это поле всегда возвращает значение. |
UPDATE_RULE |
smallint |
Действие, совершаемое над внешним ключом, когда операция SQL является операцией обновления. SQL Server возвращает 0 или 1 для этих столбцов. 0=CASCADE изменения внешнего ключа. 1=NO ACTION изменения при наличии внешнего ключа. 2=SET_NULL; установка значения внешнего ключа в NULL. |
DELETE_RULE |
smallint |
Действие, совершаемое над внешним ключом, когда операция SQL является операцией удаления. SQL Server возвращает 0 или 1 для этих столбцов. 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. |
Возвращенные результаты сортируются по столбцам FKTABLE_QUALIFIER, FKTABLE_OWNER, FKTABLE_NAME и KEY_SEQ.
Замечания
Кодирование приложения, в состав которого входят таблицы с отключенными внешними ключами, можно выполнять следующим образом.
- Временно отключить проверку ограничений (ALTER TABLE NOCHECK или CREATE TABLE NOT FOR REPLICATION) при работе с таблицами, потом включить ее снова. Дополнительные сведения о параметре NOT FOR REPLICATION см. в разделе Управление ограничениями, идентификаторами и триггерами с помощью параметра «NOT FOR REPLICATION».
- Использовать триггеры кода приложения для обеспечения связей.
Если введено имя таблицы первичных ключей, а имя таблицы внешних ключей — NULL, то процедура sp_fkeys возвращает все таблицы, в которых есть внешний ключ к данной таблице. Если введено имя таблицы внешних ключей, а имя таблицы первичных ключей — NULL, то процедура sp_fkeys возвращает все таблицы, имеющие связь «первичный ключ — внешний ключ» с внешними ключами в таблице внешних ключей.
Хранимая процедура sp_fkeys равнозначна процедуре SQLForeignKeys в ODBC.
Разрешения
Требуется разрешение SELECT для схемы.
Примеры
В приведенном ниже примере выводится список внешних ключей для таблицы HumanResources.Department
базы данных AdventureWorks
.
USE AdventureWorks;
GO
EXEC sp_fkeys @pktable_name = N'Department',
@pktable_owner = N'HumanResources'
См. также
Справочник
Хранимые процедуры каталога (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)
sp_pkeys (Transact-SQL)