SQL Server唯一约束

SQL Server UNIQUE约束简介

SQL Server UNIQUE 约束用于确保存储在列或列组中的数据在表中的行中是唯一的。 以下语句创建一个表: hr.persons ,其 email 邮件列中的数据在表的行中是唯一的:

在此语法中,将 UNIQUE 约束定义为列约束。 还可以将 UNIQUE 约束定义为表约束:

其次,更改表以更改列的属性:

SQL Server自动创建 UNIQUE 索引以强制存储在参与 UNIQUE 约束的列中的数据的唯一性。 因此,如果尝试插入重复行,SQL Server将拒绝更改并返回一条错误消息,提示说已违反 UNIQUE 约 束。 以下语句在 hr.persons 表中插入一个新行:

上面语句按预期工作。 由于 email 具有 UNIQUE 约束,同一表中 email 列的值不能相同,所以下面插入 语句会失败:

SQL Server发出类似下面错误消息:

如果没有为 UNIQUE 约束指定名称,SQL Server将自动为其生成名称。 在此示例中,自动生成的约束名称为: UQ__persons__XAXCDXXXXXE8240E4E ,是不是有点不太可读? 要为 UNIQUE 约束指定特定名称,请使用 CONSTRAINT 关键字,如下所示:

上面语句中,指定了 UNIQUE 约束名称为: unique_email 。

为 UNIQUE 约束指定名称的好处是:

  1. 更容易对错误消息进行分类。
  2. 修改约束时,可以引用此约束的名称。

UNIQUE约束与PRIMARY KEY约束

尽管 UNIQUE 和 PRIMARY KEY 约束都强制数据的唯一性,但是当要强制实现不是主键列的列或列组的唯 一性时,应使用 UNIQUE 约束而不是 PRIMARY KEY 约束。

与 PRIMARY KEY 约束不同, UNIQUE 约束允许 NULL 值。 此外, UNIQUE 约束将 NULL 视为常规值,因 此,它只允许每列一个 NULL 。

以下语句插入一行,其 email 列中的值为 NULL :

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐