sp_pkeys (Transact-SQL)
返回当前环境中单个表的主键信息。
语法
sp_pkeys [ @table_name = ] 'name'
[ , [ @table_owner = ] 'owner' ]
[ , [ @table_qualifier = ] 'qualifier' ]
参数
[ @table_name = ] 'name'
为其返回信息的表。name 的数据类型为 sysname,无默认值。不支持通配符模式匹配。[ @table_owner = ] 'owner'
为指定的表指定所有者。owner 的数据类型为 sysname,默认值为 NULL。不支持通配符模式匹配。如果未指定 owner,则遵循基础 DBMS 的默认表可见性规则。在 SQL Server 中,如果当前用户拥有一个具有指定名称的表,则返回该表的列。如果未指定 owner,并且当前用户没有名称为指定 name 的表,则此过程将查找由数据库所有者拥有,并且名称为指定 name 的表。如果有,则返回该表的列。
[ @table_qualifier = ] 'qualifier'
表限定符。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 存储过程与 ODBC 中的 SQLPrimaryKeys 功能相同。返回的结果按 TABLE_QUALIFIER、TABLE_OWNER、TABLE_NAME 和 KEY_SEQ 排序。
权限
需要对架构的 SELECT 权限。
示例
以下示例检索 AdventureWorks2008R2 数据库中 HumanResources.Department 表的主键。
USE AdventureWorks2008R2;
GO
EXEC sp_pkeys @table_name = N'Department'
,@table_owner = N'HumanResources';