我必须创建一个约束,以防止任何人将行添加到包含重复电子邮件地址的表中,尽管电子邮件地址列中允许使用空值。
表已经制作好了,我知道如何创建一个基本的检查约束。
如果不使用子查询,我将如何解决这个问题? (因为我不能在约束中使用它们:()
ALTER TABLE EMPS
ADD CONSTRAINT EMPSEMAIL_ALREADYEXISTS CHECK (EMAIL IS NULL AND ???);
从 EMPS 获取所有邮件的 SQL 命令
SELECT EMAIL FROM EMPS;
最佳答案
你不需要一个检查约束你需要一个唯一索引:
create unique index ix_email on EMPS (email);
Oracle 不会在所有列都为 NULL 的索引中包含元组。在这种情况下,只有一列,因此 NULL 值不会被索引
其他 DBMS 不允许像这样的唯一索引有多个 NULL 值
关于sql - 如何在 Oracle 中创建约束以避免重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23016820/