建立唯一的條件約束
適用於:SQL Server 2016 (13.x) 和更新版本 Azure SQL 資料庫 Azure SQL 受控執行個體
您可以使用 SQL Server Management Studio 或 Transact-SQL,在 SQL Server 中建立 Unique 條件約束,確保在沒有參與主索引鍵之特定資料行中輸入的值不會重複。 建立唯一條件約束會自動建立對應的唯一索引。
注意
如需 Azure Synapse Analytics 中 Unique 條件約束的詳細資訊,請參閱 Azure Synapse Analytics 中的主索引鍵、外部索引鍵和唯一索引鍵。
權限
需要資料表的 ALTER 權限。
使用 SQL Server Management Studio (SSMS)
使用 SSMS 建立 Unique 條件約束
在物件總管中,以滑鼠右鍵按一下要加入唯一條件約束的資料表,然後選取 [設計]。
在 [資料表設計工具] 功能表中,選取 [索引/索引鍵]。
在 [索引/索引鍵] 對話方塊中,選取 [加入]。
在 [一般] 底下的方格中,選取 [類型],從屬性右邊的下拉式清單方塊中選擇 [唯一索引鍵],然後選取 [關閉]。
在 [檔案] 功能表上,選取 [儲存 資料表名稱]。
使用 Transact-SQL
使用 Transact-SQL 建立 Unique 條件約束
在物件總管中,連線到資料庫引擎的執行個體。
在 [標準] 列上,選取 [新增查詢]。
複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。 此範例會建立
TransactionHistoryArchive4
資料表並且在TransactionID
資料行上建立唯一條件約束。USE AdventureWorks2022; GO CREATE TABLE Production.TransactionHistoryArchive4 ( TransactionID int NOT NULL, CONSTRAINT AK_TransactionID UNIQUE(TransactionID) ); GO
在現有的資料表上建立 Unique 條件約束
在物件總管中,連線到資料庫引擎的執行個體。
在 [標準] 列上,選取 [新增查詢]。
複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。 此範例會在
PasswordHash
資料表中的PasswordSalt
和Person.Password
資料行上建立唯一條件約束。USE AdventureWorks2022; GO ALTER TABLE Person.Password ADD CONSTRAINT AK_Password UNIQUE (PasswordHash, PasswordSalt); GO
在新的資料表中建立 Unique 條件約束
在物件總管中,連線到資料庫引擎的執行個體。
在 [標準] 列上,選取 [新增查詢]。
複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。 此範例會建立資料表並且在
TransactionID
資料行上定義唯一條件約束。USE AdventureWorks2022; GO CREATE TABLE Production.TransactionHistoryArchive2 ( TransactionID int NOT NULL, CONSTRAINT AK_TransactionID UNIQUE(TransactionID) ); GO
在可為 Null 的資料行上建立 Unique 條件約束
在物件總管中,連線到資料庫引擎的執行個體。
在 [標準] 列上,選取 [新增查詢]。
複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。 此範例會使用
CREATE UNIQUE INDEX
語法建立篩選的 Unique 條件約束,只對非NULL
值強制執行唯一性。USE AdventureWorks2022; GO CREATE UNIQUE INDEX UQ_AdventureWorksDWBuildVersion ON dbo.AdventureWorksDWBuildVersion (DBVersion) WHERE (DBVersion IS NOT NULL); GO