创建主键

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

本主题内容

在您开始之前

局限性与限制

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

  • 在 PRIMARY KEY 约束中定义的所有列都必须定义为 NOT NULL。 如果未指定可空性,参与 PRIMARY KEY 约束的所有列的可空性将设置为 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)。