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';