sp_foreignkeys (Transact-SQL)

适用范围:SQL Server

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

Transact-SQL 语法约定

语法

sp_foreignkeys
    [ @table_server = ] N'table_server'
    [ , [ @pktab_name = ] N'pktab_name' ]
    [ , [ @pktab_schema = ] N'pktab_schema' ]
    [ , [ @pktab_catalog = ] N'pktab_catalog' ]
    [ , [ @fktab_name = ] N'fktab_name' ]
    [ , [ @fktab_schema = ] N'fktab_schema' ]
    [ , [ @fktab_catalog = ] N'fktab_catalog' ]
[ ; ]

参数

[ @table_server = ] N'table_server'

要为其返回表信息的链接服务器的名称。 @table_server为 sysname,没有默认值。

[ @pktab_name = ] N'pktab_name'

具有主键的表的名称。 @pktab_name为 sysname,默认值为 NULL.

[ @pktab_schema = ] N'pktab_schema'

具有主键的架构的名称。 @pktab_schema为 sysname,默认值为 NULL. 在 SQL Server 中,此参数包含所有者名称。

[ @pktab_catalog = ] N'pktab_catalog'

具有主键的目录的名称。 @pktab_catalog为 sysname,默认值为 NULL. 在 SQL Server 中,此参数包含数据库名称。

[ @fktab_name = ] N'fktab_name'

具有外键的表的名称。 @fktab_name为 sysname,默认值为 NULL.

[ @fktab_schema = ] N'fktab_schema'

具有外键的架构的名称。 @fktab_schema为 sysname,默认值为 NULL.

[ @fktab_catalog = ] N'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_NAMEPK_NAME始终返回 NULL

注解

sp_foreignkeys查询与@table_server相对应的 OLE DB 访问接口的FOREIGN_KEYS行集IDBSchemaRowset@table_name@table_schema@table_catalog@column参数将传递给此接口以限制返回的行。

权限

需要对架构的 SELECT 权限。

示例

下面的示例返回有关链接服务器 DepartmentAdventureWorks2022 数据库中的 Seattle1 表中的外键的信息。

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