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

标签 sql oracle field constraints

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

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

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

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/

相关文章:

mysql - Microsoft SQL Server MAX 返回

java - 加速大量可能返回或不返回结果的 SELECT 查询

python - 使用 pandas 写入 sql 数据库

sql - 在sql中获取两个日期之间的月数和天数之间的差异

java- field.set(objec1,object2) 仅当 object1 是字符串时才有效

mysql - 保存查询结果以在 IN 比较中使用

oracle - 查找 Oracle 数据库的服务器名称

java - ORA-00905: 缺少关键字 Hibernate 查询 Oracle

java - 如何解决 Java 中缺少抽象字段的问题?

Javascript 无法隐藏某些 DIV