sp_foreignkeys (Transact-SQL)

适用于:SQL Server

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

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_serversysname,无默认值。

[ @pktab_name = ] 'pktab_name' 具有主键的表的名称。 pktab_namesysname,默认值为 NULL。

[ @pktab_schema = ] 'pktab_schema' 具有主键的架构的名称。 pktab_schemasysname,默认值为 NULL。 在 SQL Server 中,它包含所有者名称。

[ @pktab_catalog = ] 'pktab_catalog' 具有主键的目录的名称。 pktab_catalogsysname,默认值为 NULL。 在 SQL Server 中,它包含数据库名称。

[ @fktab_name = ] 'fktab_name' 具有外键的表的名称。 fktab_namesysname,默认值为 NULL。

[ @fktab_schema = ] 'fktab_schema' 具有外键的架构的名称。 fktab_schemasysname,默认值为 NULL。

[ @fktab_catalog = ] 'fktab_catalog' 具有外键的目录的名称。 fktab_catalogsysname,默认值为 NULL。

返回代码值

结果集

各种 DBMS 产品支持表 (目录的三部分命名架构) ,结果集中表示。

列名称 数据类型 说明
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 查询对应于 table_server 的 OLE DB 访问接口的 IDBSchemaRowset 接口 的FOREIGN_KEYS行集table_nametable_schematable_catalog参数将传递到此接口以限制返回的行。

权限

需要对架构的 SELECT 权限。

示例

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

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

另请参阅

sp_catalogs (Transact-SQL)
sp_column_privileges (Transact-SQL)
sp_indexes (Transact-SQL)
sp_linkedservers (Transact-SQL)
sp_primarykeys (Transact-SQL)
sp_tables_ex (Transact-SQL)
sp_table_privileges (Transact-SQL)
系统存储过程 (Transact-SQL)