【问题标题】:How do I create a constraint in Oracle to avoid duplicate values?如何在 Oracle 中创建约束以避免重复值?
【发布时间】:2014-04-11 15:31:16
【问题描述】:

我必须创建一个约束,以防止任何人将行添加到包含重复电子邮件地址的表中,尽管电子邮件地址列中允许使用空值。

表已经制作好了,我知道如何创建一个基本的检查约束。

如果不使用子查询,我将如何解决这个问题? (因为我不能在约束中使用它们:()

ALTER TABLE EMPS
ADD CONSTRAINT EMPSEMAIL_ALREADYEXISTS CHECK (EMAIL IS NULL AND ???);

从 EMPS 获取所有邮件的 SQL 命令

SELECT EMAIL FROM EMPS;

【问题讨论】:

    标签: sql oracle field constraints


    【解决方案1】:

    你不需要一个检查约束你需要一个唯一索引:

    create unique index ix_email on EMPS (email);
    

    Oracle 不会在所有列都为 NULL 的索引中包含元组。在这种情况下,只有一列,因此 NULL 值不会被索引

    其他 DBMS 不允许像这样的唯一索引有多个 NULL 值

    【讨论】:

    • 谢谢,我想我是因为要求检查而使问题复杂化了。问题解决了! :)
    猜你喜欢
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多