sp_foreignkeys (Transact-SQL)

返回引用链接服务器中表的主键的外键。

主题链接图标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 上 AdventureWorks2008R2 数据库中的 Department 表中的外键的信息。

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