sp_pkeys (Transact-SQL)
适用于:Microsoft Fabric 中的 SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW) Warehouse
返回当前环境中单个表的主键信息。
语法
SQL Server、Azure SQL 数据库、Azure Synapse Analytics、Analytics Platform System(PDW)的语法。
sp_pkeys
[ @table_name = ] N'table_name'
[ , [ @table_owner = ] N'table_owner' ]
[ , [ @table_qualifier = ] N'table_qualifier' ]
[ ; ]
参数
[ @table_name = ] N'table_name'
指定要为其返回信息的表。 @table_name 为 sysname,没有默认值。 不支持通配符模式匹配。
[ @table_owner = ] N'table_owner'
为指定的表指定所有者。 @table_owner为 sysname,默认值为 NULL
. 不支持通配符模式匹配。 如果未 指定@table_owner ,则应用基础数据库管理系统(DBMS)的默认表可见性规则。
在 SQL Server 中,如果当前用户拥有一个具有指定名称的表,则返回该表的列。 如果未指定@table_owner,并且当前用户不拥有具有指定@table_name的表,则此过程将查找具有数据库所有者拥有的指定@table_name的表。 如果存在这样的表,则返回该表的列。
[ @table_qualifier = ] N'table_qualifier'
表限定符。 @table_qualifier为 sysname,默认值为 NULL
. 各种 DBMS 产品支持表的三部分命名(<qualifier>.<owner>.<name>
)。 在 SQL Server 中,此列表示数据库名称。 在某些产品中,它表示表所在数据库环境的服务器名称。
返回代码值
无。
结果集
列名称 | 数据类型 | 描述 |
---|---|---|
TABLE_QUALIFIER |
sysname | 表限定符的名称。 此字段可以是 NULL . |
TABLE_OWNER |
sysname | 表所有者的名称。 此字段始终返回值。 |
TABLE_NAME |
sysname | 表的名称。 在 SQL Server 中,该列表示在 sysobjects 表中列出的表名。 此字段始终返回值。 |
COLUMN_NAME |
sysname | 返回的每个列 TABLE_NAME 的列的名称。 在 SQL Server 中,此列表示表中列出的 sys.columns 列名。 此字段始终返回值。 |
KEY_SEQ |
smallint | 多列主键中列的序列号。 |
PK_NAME |
sysname | 主键标识符。 如果不适用于数据源,则 NULL 返回。 |
注解
sp_pkeys
返回有关使用约束显式定义的 PRIMARY KEY
列的信息。 由于不是所有的系统均支持显式命名的主键,因此由网关实现者决定主键的构成。 术语主键是指表的逻辑主键。 每个列为逻辑主键的键应为其定义唯一索引。 此唯一索引也返回在 sp_statistics
.
sp_pkeys
存储过程等效于 SQLPrimaryKeys
ODBC。 结果按 TABLE_QUALIFIER
、 TABLE_OWNER
、 TABLE_NAME
和 KEY_SEQ
。
权限
需要对架构的 SELECT
权限。
示例
本文中的 Transact-SQL 代码示例使用 AdventureWorks2022
或 AdventureWorksDW2022
示例数据库,可从 Microsoft SQL Server 示例和社区项目主页下载它。
以下示例检索 HumanResources.Department
数据库中 AdventureWorks2022
表的主键。
USE AdventureWorks2022;
GO
EXEC sp_pkeys @table_name = N'Department',
@table_owner = N'HumanResources';
示例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
以下示例检索 DimAccount
数据库中 AdventureWorksPDW2012
表的主键。 它返回零行,指示表没有主键。
-- Uses AdventureWorksPDW
EXEC sp_pkeys @table_name = N'DimAccount';