sp_pkeys (Transact-SQL)
適用于: Microsoft Fabric 中的 SQL Server
Azure SQL Database
Azure SQL 受控實例
Azure Synapse Analytics Analytics
Platform System (PDW)倉儲
傳回目前環境中單一資料表的主鍵資訊。
語法
-- 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 '
這是要傳回信息的資料表。 name 是 sysname ,沒有預設值。 不支援萬用字元模式比對。
[ @table_owner= ] ' owner '
指定指定資料表的資料表擁有者。 owner 是 sysname ,預設值為 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';
另請參閱
意見反應
提交並檢視相關的意見反應