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

odi*_*seh 2 indexing sql-server-2005 unique

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

管理索引/密钥:

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

谢谢

Qua*_*noi 5

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

ALTER TABLE … ADD CONSTRAINT … UNIQUE
Run Code Online (Sandbox Code Playgroud)

CREATE UNIQUE INDEX … ON …
Run Code Online (Sandbox Code Playgroud)

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

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

与用户的观点的唯一区别是可以隐式命名约束,但是您应该始终为索引提供显式名称.

  • @Lieven:至于现在,没有区别,但在未来的版本中可以有.`UNIQUE CONSTRAINT`是一个逻辑概念(确保列的值是唯一的),`CREATE UNIQUE INDEX`是一个物理概念(创建一个不允许重复的`B-Tree`).如果一些有智慧的人会发明一种更有效的方法来确保唯一性,那么`UNIQUE CONSTRAINT`可以使用这种有效的方式,而`CREATE UNIQUE INDEX`则不能. (3认同)