如何使用约束对话框在SQL Server 2008中添加约束?

3
你如何在SQL Server 2008对话框中手动定义约束?我想添加一个约束,当我添加新记录时,如果已经存在,则不添加。我的表结构是这样的,AdvCatJoinID 是我的主键,CatID 是来自 Category 表的关键字,AliasID 是别名表的主键,我希望约束条件是,如果 CatIDAliasID 已经作为一对存在于表中,则不要添加新记录(因为它已经存在),该怎么做?谢谢。
2个回答

2
你真的需要 "AdvCatJoinID" 列吗?通常对于这些关联表,我只在 2 个外键列上创建一个组合主键。这样可以强制执行唯一性方面。
否则,在 SSMS 中进行操作需要通过 "Indexes/Keys" 对话框(而不是约束对话框)配置一个新的唯一索引,并选择两个列。你可以在右键单击表并选择 "设计",然后右键单击表设计器网格后访问此对话框。
要创建唯一约束而不是唯一索引,您将选择 "Unique Key" 选项,但在实际操作中两者没有实质性区别。

“…没有实际的区别…” - 除了外键约束可以引用唯一约束,但不能引用唯一索引。 - Damien_The_Unbeliever
@Damien - 没有什么区别,这段代码可以正常工作:create table t(c int) go create unique index ix on t(c) go create table t2 (c int references t(c))但是也许会存在一些差异,例如无法将包含列添加到支持唯一约束的索引中。 - Martin Smith
我确定过去在这种行为上发现了差异,但刚刚重新测试了2008和2000,你是正确的。我想知道我当时在想什么? - Damien_The_Unbeliever
@Damien - 我有一种模糊的感觉,使用索引而不是约束实际上会给你更多的灵活性,但我无法指出任何具体的东西,除了可能包含的列。 - Martin Smith

2

步骤1:

在SQL Server对象资源管理器中,找到您想要添加约束的数据库和表,在索引子节点中右键单击,选择新建索引

enter image description here

步骤2:

在弹出的对话框中,定义您的唯一索引:

  • 给它一个您选择的名称
  • 确保选中了[ X ] Unique复选框
  • 单击[ 添加 ]按钮两次,将两个列添加到索引中

enter image description here

完成这两个步骤后,现在您在(CatID, AliasID)组合上拥有一个唯一索引,这两个值的任何一对都不会在您的表中存在超过一次。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接