创建主键
您可以使用 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
创建主键
在对象资源管理器中,右键单击要为其添加唯一约束的表,再单击**“设计”**。
在**“表设计器”**中,单击要定义为主键的数据库列的行选择器。 若要选择多个列,请在单击其他列的行选择器时按住 Ctrl 键。
右键单击该列的行选择器,然后选择**“设置主键”**。
注意 |
---|
若要重新定义主键,则必须首先删除与现有主键之间的任何关系,然后才能创建新主键。 此时,将显示一条消息警告您:作为该过程的一部分,将自动删除现有关系。 |
主键列由其行选择器中的主键符号标识。
如果主键由多个列组成,则其中一个列将允许重复值,但是主键中所有列的值的各种组合必须是唯一的。
如果定义复合键,则主键中列的顺序将与表中显示的列顺序相匹配。 不过,您可以在创建主键之后更改列的顺序。 有关详细信息,请参阅修改主键。
[Top]
使用 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)。
[Top]