为什么Microsoft在SQL Server 2005中为表创建唯一索引提供了2种不同的选项?

时间:2010-05-11 11:24:03

标签: sql-server-2005 indexing unique

为什么Microsoft在SQL Server 2008中的表上创建了2个不同的选项来创建唯一索引?

管理索引/密钥:

1)type = Unique Key ==> IsUnique = Yes(禁用IsUnique) 2)type = Index ==> IsUnique =是

谢谢

2 个答案:

答案 0 :(得分:5)

它们映射到两个不同的SQL命令:

ALTER TABLE … ADD CONSTRAINT … UNIQUE

CREATE UNIQUE INDEX … ON …

CONSTRAINT UNIQUE是一个逻辑概念,而UNIQUE INDEX是其物理实现。

SQL Server中,CONSTRAINT UNIQUE始终由唯一索引备份,该索引使用与约束相同的名称隐式创建,因此这些命令实际上是相同的。

与用户观点的唯一区别是约束可以隐式命名,但是你应该总是为索引提供一个显式名称。

答案 1 :(得分:0)

这是Google发现的(对于SQL Server 2000):

  

简短的回答是一个独特的   index只是一个索引,而a   唯一约束是唯一索引   它被列为约束对象   在数据库中。在sysobjects中   表,唯一约束将有   “UQ”的xtype值。但确实如此   唯一约束有任何附加   唯一索引没有的行为   有 - 反之亦然?答案就是这样   问题,事实证明,需要大量的   挖。

     

...

来源:Unique Constraints and Unique Indexes