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。
返回代码值
无
结果集
各种 DBMS 产品支持表的三部分命名方式 (catalog**.schema.**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 约束名称。 |
DEFERRABILITY |
smallint |
指示是否可延迟约束检查。 |
在结果集中,FK_NAME 和 PK_NAME 列总是返回 NULL。
注释
sp_foreignkeys 将查询 IDBSchemaRowset 接口的 FOREIGN_KEYS 行集,该接口属于对应于 table_server 的 OLE DB 访问接口table_name、table_schema、table_catalog 和 column 等参数传递到该接口以限制返回的行。
权限
需要具有对架构的 SELECT 权限。
示例
下面的示例返回有关链接服务器 Seattle1 上 AdventureWorks 数据库中的 Department 表中的外键的信息。
EXEC sp_foreignkeys @table_server = N'Seattle1',
@pktab_name = N'Department',
@pktab_catalog = N'AdventureWorks'