建立主鍵
適用於: SQL Server 2016(13.x)和更新版本
Azure SQL Database
Azure SQL 受控實例
Microsoft Fabric 中的 SQL 資料庫
您可以使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 資料庫引擎中定義主索引鍵。 建立主索引鍵會自動建立對應的唯一叢集索引。 不過,主索引鍵可以改為指定為非叢集索引。
本文中的程式代碼範例會使用 AdventureWorks2022
或 AdventureWorksDW2022
範例資料庫,您可以從 Microsoft SQL Server 範例和社群專案 首頁下載。
限制
一份資料表只能有一個 PRIMARY KEY
條件約束。
PRIMARY KEY
條件約束內所定義的所有資料行,都必須定義成 NOT NULL
。 如果未指定可 NULL 性,參與 PRIMARY KEY
條件約束的所有資料行可 NULL 性都會設成 NOT NULL
。
權限
建立具有主索引鍵的新資料表,需要資料庫中的 CREATE TABLE
權限及建立資料表的結構描述之 ALTER
權限。
在現有資料表中建立主索引鍵需要此資料表的 ALTER
權限。
使用 SQL Server Management Studio
- 在物件總管中,以滑鼠右鍵點擊要加入唯一性約束的資料表,然後選取 [設計]。
- 在 資料表設計工具 中,選取要定義為主索引鍵的資料庫欄位所在的資料列選取器。 若要選取多個資料行,請按住 CTRL 鍵,同時選取其他資料行的資料列選取器。
- 右鍵按一下欄的列選取器,然後選擇 設定主索引鍵。
警告
若要重新定義主索引鍵,必須在建立新的主索引鍵前,先刪除所有現有主索引鍵的關聯性。 系統會顯示訊息警告您,作為此過程的一部分,現有的關聯性將會自動刪除。
主要鍵資料行是透過列選擇器中的主要鍵符號來識別的。
如果主索引鍵由一個以上的資料行組成,一個資料行中允許有重複的值,但是主索引鍵中所有資料行的組合值必須是唯一的。
如果您定義了複合索引鍵,主索引鍵中的資料行順序必須符合資料表所顯示的資料行順序。 然而,您可以在建立主索引鍵之後變更資料行的順序。 如需詳細資訊,請參閱 修改主索引鍵。
使用 Transact-SQL
在現有的資料表中建立主索引鍵
下列範例會在 TransactionID
資料庫的 AdventureWorks2022
資料行上建立主索引鍵。
ALTER TABLE [Production].[TransactionHistoryArchive]
ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID);
在新的資料表中建立主索引鍵
下列範例會建立一個資料表,並在 TransactionID
資料庫的 AdventureWorks2022
資料行上定義主索引鍵。
CREATE TABLE [Production].[TransactionHistoryArchive1] (
TransactionID INT IDENTITY(1, 1) NOT NULL,
CONSTRAINT PK_TransactionHistoryArchive1_TransactionID PRIMARY KEY CLUSTERED (TransactionID)
);
在新資料表中,建立具有非叢集和獨立叢集索引的主鍵
下列範例會在 AdventureWorks2022
資料庫中建立資料表,CustomerID
資料行上有非叢集主索引鍵。 然後,它會在 TransactionID
新增叢集索引。
建立資料表,新增叢集索引。
CREATE TABLE [Production].[TransactionHistoryArchive1] ( CustomerID UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID(), TransactionID INT IDENTITY(1, 1) NOT NULL, CONSTRAINT PK_TransactionHistoryArchive1_CustomerID PRIMARY KEY NONCLUSTERED (CustomerID) );
現在新增叢集索引。
CREATE CLUSTERED INDEX CIX_TransactionID ON [Production].[TransactionHistoryArchive1] (TransactionID);