暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL Server创建主键

wzf0072 2024-04-15
209

创建主键

适用于:SQL Server 2016 (13.x) 及更高版本 

可以使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中定义主键。 创建主键会自动创建相应的唯一群集索引、聚集索引或非聚集索引(如果这样指定)。

开始之前

限制和局限

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

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

安全性

权限

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

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

使用 SQL Server Management Studio

创建主键

  1. 在“对象资源管理器”中,右键单击要向其添加唯一约束的表,然后选择“设计”。
  2. “表Designer”中,选择要定义为主键的数据库列的行选择器。 如果要选择多个列,请在为其他列选择行时按住 Ctrl 键。
  3. 右键单击该列的行选择器,然后选择“设置主键”

 注意

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

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

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

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

使用 Transact-SQL

在现有表中创建主键

下面的示例对 AdventureWorks 数据库中的 TransactionID 列创建主键。

SQL
ALTER TABLE Production.TransactionHistoryArchive
   ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID);

在新表中创建主键

下面的示例创建一个表,并对 AdventureWorks 数据库中的 TransactionID 列定义主键。

SQL
CREATE TABLE Production.TransactionHistoryArchive1
   (
      TransactionID int IDENTITY (1,1) NOT NULL
      , CONSTRAINT PK_TransactionHistoryArchive1_TransactionID PRIMARY KEY CLUSTERED (TransactionID)
   )
;

在新表中创建具有聚集索引的主键

下面的示例创建一个表,并对 AdventureWorks 数据库中的 CustomerID 列和 TransactionID 分别定义主键和聚集索引。

SQL
-- Create table to add the clustered index
CREATE TABLE Production.TransactionHistoryArchive1
   (
      CustomerID uniqueidentifier DEFAULT NEWSEQUENTIALID()
      , TransactionID int IDENTITY (1,1) NOT NULL
      , CONSTRAINT PK_TransactionHistoryArchive1_CustomerID PRIMARY KEY NONCLUSTERED (CustomerID)
   )
;

-- Now add the clustered index
CREATE CLUSTERED INDEX CIX_TransactionID ON Production.TransactionHistoryArchive1 (TransactionID);


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论