创建主键

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

本主题内容

开始之前

限制和局限

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

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

安全性

权限

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

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

使用 SQL Server Management Studio

创建主键

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

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

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

注意

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

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

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

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

“使用 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)