Transact-SQL 参考

sp_foreignkeys

返回引用主键的外键,这些主键在链接服务器中的表上。

语法

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。在 Microsoft® SQL Server™ 中,该项参数包含所有者名称。

[@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。开放数据服务网关可返回值 0、1 或 2:

0= 对外键的 CASCADE 修改。
1= 如果有外键,那么进行 NO ACTION 修改。
2=SET_NULL;将外键设置为 NULL。

DELETE_RULE smallint 当 SQL 操作是删除时,应用于外键的动作。SQL Server 为这些列返回 0 或 1。开放数据服务网关可返回值 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 查询 OLE DB 提供程序的 IDBSchemaRowset 接口的 FOREIGN_KEYS 行集,该提供程序与 table_server 相对应。table_nametable_schematable_catalogcolumn 参数传递到此接口,用以限制返回的行。

示例

下面的示例返回有关 Northwind 数据库中 Customers 表的外键信息。

USE master
EXEC sp_foreignkeys @table_server = N'LONDON1', 
   @pktab_name = N'Customers', 
   @pktab_catalog = N'Northwind'

请参见

sp_catalogs

sp_column_privileges

sp_indexes

sp_linkedservers

sp_primarykeys

sp_tables_ex

sp_table_privileges

系统存储过程