在主鍵約束下使用唯一約束的優點
通過創建一個UNIQUE約束,SQL Server管理員指定一個列可能不包含重複的值。 當您創建新的UNIQUE約束時,SQL Server會檢查有問題的列以確定它是否包含任何重複值。 如果該表包含預先存在的重複項,則約束創建命令將失敗。 同樣,一旦對列有一個UNIQUE約束,嘗試添加或修改會導致重複項存在的數據也會失敗。
為什麼要使用UNIQUE約束
UNIQUE約束和主鍵都強制唯一性,但有時候UNIQUE約束是更好的選擇。
- 當你想要一個表的多個約束時使用UNIQUE約束。 您只能將一個主鍵附加到表中。
- 列允許為空值時使用UNIQUE約束。 主鍵約束只能附加到不允許空值的列。
創建一個唯一的約束
有很多方法可以在SQL Server中創建UNIQUE約束。 如果要使用Transact-SQL在現有表上添加UNIQUE約束,可以使用ALTER TABLE語句,如下所示:
ALTER TABLE ADD CONSTRAINT UNIQUE()如果您更願意使用GUI工具與SQL Server交互,則還可以使用SQL Server Management Studio創建UNIQUE約束。 就是這樣:
- 打開SQL Server Management Studio 。
- 展開要創建約束的數據庫的Tables文件夾。
- 右鍵單擊要添加約束的表格,然後單擊設計 。
- 在表設計器菜單中,單擊索引/鍵 。
- 在索引/鍵對話框中,單擊添加 。
- 在類型下拉列表中選擇唯一密鑰 。
唯一約束與唯一索引
關於UNIQUE約束和UNIQUE索引之間的區別存在一些混淆。 雖然可以使用不同的Transact-SQL命令來創建它們(ALTER TABLE ... ADD CONSTRAINT for constraints和CREATE UNIQUE INDEX for indexes),但它們大多數情況下具有相同的效果。 事實上,當你創建一個UNIQUE約束時,它實際上在表上創建一個UNIQUE索引。 但值得注意的是,有幾點不同:
- 在創建索引時,可以將其他選項添加到創建命令。
- 受到UNIQUE約束的列可以用作外鍵 。