sp_foreignkeys (Transact-SQL)
适用范围:SQL Server
返回引用链接服务器中的表的主键的外键。
语法
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_NAME
PK_NAME
始终返回 NULL
。
注解
sp_foreignkeys
查询与@table_server相对应的 OLE DB 访问接口的FOREIGN_KEYS行集IDBSchemaRowset
。 @table_name、@table_schema、@table_catalog和@column参数将传递给此接口以限制返回的行。
权限
需要对架构的 SELECT
权限。
示例
下面的示例返回有关链接服务器 Department
上 AdventureWorks2022
数据库中的 Seattle1
表中的外键的信息。
EXEC sp_foreignkeys @table_server = N'Seattle1',
@pktab_name = N'Department',
@pktab_catalog = N'AdventureWorks2022';