我在我的tsql表上创建了一个约束:
alter table disabledqualities
add constraint uc_uIdQualCode
unique (userId, qualitycode)
在MSSMStudio中,约束显示在索引下,而不是在约束下。
为什么?
- EDIT--
我知道它创建了一个强制执行约束的索引,但是为什么有一个名为“约束”的节点?
答案 0 :(得分:4)
SQL Server在场景后面创建索引以强制执行约束
这是另一种编写方法,通过添加非聚集告知sql server来使用非聚簇索引,你也可以创建一个聚簇,只要你没有聚集的PK(默认)或另一个聚簇索引
alter table disabledqualities
add constraint uc_uIdQualCode
unique nonclustered (userId, qualitycode)
[编辑] 该节点要添加检查约束,在索引
下添加唯一约束要么远离巫师
答案 1 :(得分:1)
检查约束和默认约束显示在约束节点下。
答案 2 :(得分:0)
SQL使用索引来强制执行唯一约束。
答案 3 :(得分:0)
据我所知,它创建了一个强制执行约束的索引,但为什么会出现一个名为“约束”的节点?
此节点用于显示CHECK
约束。
答案 4 :(得分:0)
真正的答案是“因为微软这么说。如果你想要答案,你就得问问他们”。
答案 5 :(得分:0)
因为可以在sysindexes系统视图中找到UNIQUE约束
从sysindexes中选择*,其中name ='uc_uIdQualCode'
这是合乎逻辑的 要从Studio添加新的唯一constaint,您需要单击Manage Index and Keys按钮。因此,如果您要从索引中添加它,则必须在索引中看到它:)
答案 6 :(得分:0)
我想也许你不明白在限制条件下会出现什么,因为你不知道检查约束是什么。检查约束将检查插入或更新的数据,以查看它是否符合某种业务规则。它用于确保数据完整性。例如,如果您有一个只应包含值1,4或5的整数字段,那么您将设置一个检查约束以确保9不会添加到该字段中。日期字段上的检查约束可能指定它必须晚于PlannedCompletionDate字段的当前日期和时间,或者CompletionDate必须晚于StartDate。这些是在约束下出现的那种东西。