这个颠倒的银钥匙图标是什么


11

我继承了一个SQL Server 2005第三方服务器和数据库,以能够生成报告和仪表板。

在一张桌子上,我找到了一个新图标:蓝银色的上下颠倒钥匙,以及其他主钥匙和外钥匙。

当我右键单击它时,上下文菜单为我提供了“脚本约束为”选项,但是当我尝试对其进行“修改”时,它将打开列设计表单(如主键),但是它出现在“索引”部分,而不是约束。

有人知道它的名字以及它的用途吗?

上下键

Answers:


12

这表示唯一的约束。在SQL Server中,唯一约束实际上是作为幕后的索引实现的;这就是为什么它也出现在Indexes节点下(我不能很好地解释为什么它至少没有在Constraints节点下列出,或者为什么他们选择了上下颠倒的钥匙而不是仅仅用不同的颜色)。

您应该在此处看到一个结果,以验证它是否实际上已作为索引实现:

SELECT index_id, type_desc, is_unique_constraint
  FROM sys.indexes
  WHERE name = N'IX_tblCustIndex';

您说您看到了“脚本约束为...”-如果继续进行操作,它将为您提供一个类似于以下内容的脚本:

ALTER TABLE [dbo].[tblCustIndex] ADD UNIQUE NONCLUSTERED 
(
  [some_column] ASC
) WITH (...a bunch of default options...)

但是不要运行它,因为此语法不使用名称,只会创建第二个冗余的唯一约束...

这是一个非常简单的再现,并证明即使在使用非常基本的语法的情况下,我在2014年也获得了颠倒的钥匙:

CREATE TABLE dbo.foo(id INT UNIQUE);

在此处输入图片说明 点击放大

现在,如果您显式创建一个唯一索引,则可以得到一个不同的图标(唯一的区别sys.indexes是的名称和值is_unique_constraint):

在此处输入图片说明 点击放大

对于其他差异,请参见此堆栈溢出答案


1
它特定于SQL2005吗?因为当我尝试添加UNIQUE索引时,会得到一个不同的图标(某种反向树)。当我添加一个约束时,我得到了某种方括号表图标。我似乎无法复制此图标。
菲利普2015年

@Philippe更新答案。
亚伦·伯特兰

谢谢。那是一个详尽的解释,而且是一个简短的解释!:-)
Philippe
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.