可以使用 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
创建主键
在对象资源管理器中,右键单击要向其添加唯一约束的表,然后单击“ 设计”。
在 表设计器中,单击要定义为主键的数据库列的行选择器。 如果要选择多个列,请在单击其他列的行选择器的同时按住 Ctrl 键。
右键单击该列的行选择器,然后选择“设置主键”。
谨慎
若要重新定义主键,则必须首先删除与现有主键之间的任何关系,然后才能创建新主键。 此时,将显示一条消息警告您:作为该过程的一部分,将自动删除现有关系。
主键列由其行选择器中的主键符号标识。
如果主键由多个列组成,则其中一个列将允许重复值,但是主键中所有列的值的各种组合必须是唯一的。
如果定义复合键,则主键中列的顺序将与表中显示的列顺序相匹配。 不过,您可以在创建主键之后更改列的顺序。 有关详细信息,请参阅 修改主键。
使用 Transact-SQL
在现有表中创建主键
在 “对象资源管理器” 中,连接到某个数据库引擎实例。
在标准栏上,单击“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后单击 执行。 该示例在列
TransactionID上创建主键。USE AdventureWorks2012; GO ALTER TABLE Production.TransactionHistoryArchive ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID); GO
在新表中创建主键
在 “对象资源管理器” 中,连接到某个数据库引擎实例。
在标准栏上,单击“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后单击 执行。 该示例创建一个表,并定义列
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)。