Share via


sp_pkeys (Transact-SQL)

傳回目前環境中單一資料表的主索引鍵資訊。

主題連結圖示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_QUALIFIERTABLE_OWNERTABLE_NAMEKEY_SEQ 來排序。

權限

需要結構描述的 SELECT 權限。

範例

下列範例會擷取 AdventureWorks 資料庫之 HumanResources.Department 資料表的主索引鍵。

USE AdventureWorks;
GO
EXEC sp_pkeys @table_name = N'Department'
    ,@table_owner = N'HumanResources';