【发布时间】:2016-08-23 08:58:55
【问题描述】:
因此,我正在查看的表具有唯一约束和多列的唯一索引,并且两者的列完全相同。
这有什么用还是唯一约束是多余的?
【问题讨论】:
-
唯一约束必须由索引备份;尽管它本身必须是独一无二的。两者都有是正常的。它们通常具有相同的名称,但并非总是如此。你当然可以拥有一个没有明确唯一约束的唯一索引。但是约束清楚地表明(对 Oracle 和开发人员而言)这是为了完整性,而不仅仅是为了性能。为什么你认为这是个问题?
-
同意亚历克斯,但我要补充一点,如果其中的某些内容被视为多余,我会选择索引的唯一性。我宁愿有一个唯一约束和一个非唯一索引而不是没有约束和一个唯一索引。
-
根据 MSDN 文章technet.microsoft.com/en-us/library/aa224827(v=sql.80).aspx 唯一约束和唯一索引之间没有实际区别,除了唯一约束也被列为数据库中的约束对象。由于无法禁用唯一约束,因此具有约束状态不会为唯一约束提供除唯一索引之外的任何其他行为。但是,有几个索引创建选项不适用于创建唯一约束的 ALTER TABLE 命令。参考文章
-
@Gopidoss - 可以禁用唯一约束(删除索引),也可以推迟,唯一索引不能。无论如何,对于甲骨文来说,问题是什么;不知道 SQL Server...
-
外键也可以引用唯一键(约束);约束必须存在,仅具有唯一索引是不够的。因此存在实际差异。
标签: oracle constraints unique-constraint