如何在Oracle中创建约束以避免重复值?

时间:2014-04-11 15:31:16

标签: sql oracle field constraints

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

该表已经完成,我知道如何创建基本检查约束。

如何在不使用子查询的情况下完成此操作? (因为我不能在约束中使用它们:()

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

用于获取EMPS所有电子邮件的SQL命令

SELECT EMAIL FROM EMPS;

1 个答案:

答案 0 :(得分:7)

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

create unique index ix_email on EMPS (email);

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

其他DBMS不允许多个NULL值用于像

这样的唯一索引