Share via


建立和修改 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 條件約束的資訊

請參閱

概念