我必须创建一个约束,以防止任何人向包含重复电子邮件地址的表添加行,但电子邮件地址列中允许使用空值。
该表已经完成,我知道如何创建基本检查约束。
如何在不使用子查询的情况下完成此操作? (因为我不能在约束中使用它们:()
ALTER TABLE EMPS
ADD CONSTRAINT EMPSEMAIL_ALREADYEXISTS CHECK (EMAIL IS NULL AND ???);
用于获取EMPS所有电子邮件的SQL命令
SELECT EMAIL FROM EMPS;
答案 0 :(得分:7)
您不需要检查约束,您需要一个唯一索引:
create unique index ix_email on EMPS (email);
Oracle在所有列都为NULL的索引中不包含元组。在这种情况下,只有一列,因此不会将NULL值编入索引
其他DBMS不允许多个NULL值用于像
这样的唯一索引