创建和修改 PRIMARY KEY 约束

可以在创建表时创建单个 PRIMARY KEY 约束作为表定义的一部分。如果表已存在,且没有 PRIMARY KEY 约束,则可以添加 PRIMARY KEY 约束。一个表只能有一个 PRIMARY KEY 约束。

如果已存在 PRIMARY KEY 约束,则可以修改或删除它。例如,可以让表的 PRIMARY KEY 约束引用其他列,更改列的顺序、索引名、聚集选项或 PRIMARY KEY 约束的填充因子。但是,不能更改使用 PRIMARY KEY 约束定义的列长度。

ms181043.note(zh-cn,SQL.90).gif注意:
若要修改 PRIMARY KEY 约束,必须先删除现有的 PRIMARY KEY 约束,然后再用新定义重新创建该约束。

为表中的现有列添加 PRIMARY KEY 约束时,SQL Server 2005 数据库引擎 将检查现有列的数据和元数据以确保主键符合以下规则:

  • 列不允许有空值。
    创建表时指定的 PRIMARY KEY 约束列隐式转换为 NOT NULL。
  • 不能有重复的值。
    如果为具有重复值或允许有空值的列添加 PRIMARY KEY 约束,则数据库引擎 将返回一个错误并且不添加约束。

不能添加违反以上规则的 PRIMARY KEY 约束。

数据库引擎 会自动创建唯一的索引来强制实施 PRIMARY KEY 约束的唯一性要求。如果表中不存在聚集索引或未显式指定非聚集索引,则将创建唯一的聚集索引以强制实施 PRIMARY KEY 约束。

如果存在以下情况,则不能删除 PRIMARY KEY 约束:

  • 如果另一个表中的 FOREIGN KEY 约束引用了 PRIMARY KEY 约束,则必须先删除 FOREIGN KEY 约束。
  • 表包含应用于自身的 PRIMARY XML 索引。

在创建表时创建 PRIMARY KEY 约束

CREATE TABLE (Transact-SQL)

为现有表创建或删除 PRIMARY KEY 约束

ALTER TABLE (Transact-SQL)

如何创建主键 (Visual Database Tools)

如何删除主键 (Visual Database Tools)

获取有关 PRIMARY KEY 约束的信息

sys.key_constraints (Transact-SQL)

请参阅

概念

PRIMARY KEY 约束

帮助和信息

获取 SQL Server 2005 帮助