在主键约束下使用唯一约束的优点
通过创建一个UNIQUE约束,SQL Server管理员指定一个列可能不包含重复的值。 当您创建新的UNIQUE约束时,SQL Server会检查有问题的列以确定它是否包含任何重复值。 如果该表包含预先存在的重复项,则约束创建命令将失败。 同样,一旦对列有一个UNIQUE约束,尝试添加或修改会导致重复项存在的数据也会失败。
为什么要使用UNIQUE约束
UNIQUE约束和主键都强制唯一性,但有时候UNIQUE约束是更好的选择。
- 当你想要一个表的多个约束时使用UNIQUE约束。 您只能将一个主键附加到表中。
- 列允许为空值时使用UNIQUE约束。 主键约束只能附加到不允许空值的列。
创建一个唯一的约束
有很多方法可以在SQL Server中创建UNIQUE约束。 如果要使用Transact-SQL在现有表上添加UNIQUE约束,可以使用ALTER TABLE语句,如下所示:
ALTER TABLE ADD CONSTRAINT UNIQUE()如果您更愿意使用GUI工具与SQL Server交互,则还可以使用SQL Server Management Studio创建UNIQUE约束。 就是这样:
- 打开SQL Server Management Studio 。
- 展开要创建约束的数据库的Tables文件夹。
- 右键单击要添加约束的表格,然后单击设计 。
- 在表设计器菜单中,单击索引/键 。
- 在索引/键对话框中,单击添加 。
- 在类型下拉列表中选择唯一密钥 。
唯一约束与唯一索引
关于UNIQUE约束和UNIQUE索引之间的区别存在一些混淆。 虽然可以使用不同的Transact-SQL命令来创建它们(ALTER TABLE ... ADD CONSTRAINT for constraints和CREATE UNIQUE INDEX for indexes),但它们大多数情况下具有相同的效果。 事实上,当你创建一个UNIQUE约束时,它实际上在表上创建一个UNIQUE索引。 但值得注意的是,有几点不同:
- 在创建索引时,可以将其他选项添加到创建命令。
- 受到UNIQUE约束的列可以用作外键 。