建立和修改 PRIMARY KEY 條件約束

建立資料表時,您可以建立單一 PRIMARY KEY 條件約束,當做資料表定義的一部分。如果資料表已經存在,您可以加入 PRIMARY KEY 條件約束,前提是沒有其他的 PRIMARY KEY 條件約束存在。一個資料表只能有一個 PRIMARY KEY 條件約束。

如果 PRIMARY KEY 條件約束已經存在,您可以修改或刪除它。例如,您可能希望資料表的 PRIMARY KEY 條件約束參考其他的資料行,或想要變更 PRIMARY KEY 條件約束的資料行順序、索引名稱、叢集選項或填滿因數。但您無法變更以 PRIMARY KEY 條件約束所定義的資料行長度。

[!附註]

若要修改 PRIMARY KEY 條件約束,您必須先刪除現有的 PRIMARY KEY 條件約束,然後以新的定義來重新建立。

當 PRIMARY KEY 條件約束加入資料表中的一或多個現有資料行時,Database Engine 會檢查現有的資料行資料及中繼資料,以確認符合主索引鍵的下列規則:

  • 資料行不允許使用 Null 值。

    建立資料表時所指定的 PRIMARY KEY 條件約束資料行會以隱含方式轉換為 NOT NULL。疏鬆資料行無法當做主索引鍵的一部分使用,因為疏鬆資料行必須允許 Null 值。

  • 不能有重複的值。

    如果將 PRIMARY KEY 條件約束加入具有重複值或允許 Null 值的資料行,Database Engine 會傳回錯誤,且不會加入條件約束。

您無法加入違反這些規則的 PRIMARY KEY 條件約束。

Database Engine 會自動建立唯一的索引,以強制執行 PRIMARY KEY 條件約束所需的唯一性。如果資料表中沒有叢集索引,或未明確指定非叢集的索引,會建立一個唯一的叢集索引來強制執行 PRIMARY KEY 條件約束。

如果下列情形存在,將無法刪除 PRIMARY KEY 條件約束:

  • 另一個資料表中的 FOREIGN KEY 條件約束正在參考它;這種情況下需先刪除該 FOREIGN KEY 條件約束。

  • 資料表已套用了 PRIMARY XML 索引。

若要在建立資料表時建立 PRIMARY KEY 條件約束

若要在現有的資料表建立或刪除 PRIMARY KEY 條件約束

若要取得有關 PRIMARY KEY 條件約束的資訊

請參閱

概念