sp_pkeys (Transact-SQL)

適用於:Microsoft Fabric 中的 SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics AnalyticsPlatform System (PDW)Warehouse

傳回目前環境中單一數據表的主鍵資訊。

Transact-SQL 語法慣例

語法

-- Syntax for SQL Server, Azure SQL Database, Azure Synapse Analytics, Parallel Data Warehouse  
  
sp_pkeys [ @table_name = ] 'name'       
    [ , [ @table_owner = ] 'owner' ]   
    [ , [ @table_qualifier = ] 'qualifier' ]  

引數

[ @table_name= ] 'name'
這是要傳回信息的數據表。 namesysname,沒有預設值。 不支援通配符模式比對。

[ @table_owner= ] 'owner'
指定指定數據表的資料表擁有者。 ownersysname,預設值為 NULL。 不支援通配符模式比對。 如果未 指定擁有者 ,則會套用基礎 DBMS 的預設數據表可見性規則。

在 SQL Server 中,如果目前用戶擁有具有指定名稱的數據表,則會傳回該數據表的數據行。 如果未指定擁有者,且目前用戶沒有擁有具有指定名稱的數據表,則此程式會尋找具有資料庫擁有者所擁有指定名稱的數據表。 如果存在,則會傳回該數據表的數據行。

[ @table_qualifier= ] 'qualifier'
這是數據表限定符。 限定符sysname,預設值為 NULL。 各種 DBMS 產品支援數據表的三部分命名(限定符。擁有者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 許可權。

範例

下列範例會擷 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';  

另請參閱

目錄預存程式 (Transact-SQL)
系統預存程序 (Transact-SQL)