创建主键

您可以使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 2012 中定义主键。 创建主键将自动创建相应的唯一索引、聚集索引或非聚集索引。

本主题内容

  • 开始之前:

    限制和局限

    安全性

  • 创建主键,使用:

    SQL Server Management Studio

    Transact-SQL

开始之前

限制和局限

  • 一个表只能包含一个 PRIMARY KEY 约束。

  • 在 PRIMARY KEY 约束中定义的所有列都必须定义为 NOT NULL。 如果没有指定为 Null 性,则加入 PRIMARY KEY 约束的所有列的为 Null 性都将设置为 NOT NULL。

安全性

权限

使用主键创建新表需要在数据库中具有 CREATE TABLE 权限,并对在其中创建表的架构具有 ALTER 权限。

在某一现有表中创建主键需要对该表具有 ALTER 权限。

用于“返回首页”链接的箭头图标[Top]

使用 SQL Server Management Studio

创建主键

  1. 在对象资源管理器中,右键单击要为其添加唯一约束的表,再单击**“设计”**。

  2. 在**“表设计器”**中,单击要定义为主键的数据库列的行选择器。 若要选择多个列,请在单击其他列的行选择器时按住 Ctrl 键。

  3. 右键单击该列的行选择器,然后选择**“设置主键”**。

注意事项注意

若要重新定义主键,则必须首先删除与现有主键之间的任何关系,然后才能创建新主键。 此时,将显示一条消息警告您:作为该过程的一部分,将自动删除现有关系。

主键列由其行选择器中的主键符号标识。

如果主键由多个列组成,则其中一个列将允许重复值,但是主键中所有列的值的各种组合必须是唯一的。

如果定义复合键,则主键中列的顺序将与表中显示的列顺序相匹配。 不过,您可以在创建主键之后更改列的顺序。 有关详细信息,请参阅修改主键

用于“返回首页”链接的箭头图标[Top]

使用 Transact-SQL

在现有表中创建主键

  1. 在**“对象资源管理器”**中,连接到数据库引擎的实例。

  2. 在标准菜单栏上,单击**“新建查询”**。

  3. 将以下示例复制并粘贴到查询窗口中,然后单击**“执行”**。 此示例对列 TransactionID 创建了一个主键。

    USE AdventureWorks2012;
    GO
    ALTER TABLE Production.TransactionHistoryArchive 
    ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID);
    GO
    

在新表中创建主键

  1. 在**“对象资源管理器”**中,连接到数据库引擎的实例。

  2. 在标准菜单栏上,单击**“新建查询”**。

  3. 将以下示例复制并粘贴到查询窗口中,然后单击**“执行”**。 此示例创建一个表并对列 TransactionID 定义一个主键。

    USE AdventureWorks2012;
    GO
    CREATE TABLE Production.TransactionHistoryArchive1
    (
       TransactionID int NOT NULL,
       CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID)
    );
    GO
    

    有关详细信息,请参阅 ALTER TABLE (Transact-SQL)CREATE TABLE (Transact-SQL)table_constraint (Transact-SQL)

用于“返回首页”链接的箭头图标[Top]