Oracle 中的唯一约束允许一列为空

Unique Constraint Allow Null for One column in Oracle

我有以下 Table 结构

tbl_exam (Year,ExamCode,RollNo)

1). Table中的数据是:

(2017,1,NULL)
(2017,1,NULL)  
(2017,1,1)
(2017,1,2)

允许以上值

2).

(2017,1,1)
(2017,1,1) **Not Allowed**

如何添加允许 RollNo 列为空值的唯一约束

编辑:需要复合键约束

已解决: 感谢 大卫·奥尔德里奇

create unique index exam_uidx on tbl_exam
(
Nvl2(RollNo, Year    , null),
Nvl2(RollNo, Exam_Code, null),
RollNo
)

我希望您可以通过对以下内容设置唯一约束来做到这一点:

(
  Nvl2(RollNo, Year    , null),
  Nvl2(RollNo, ExamCode, null),
  RollNo
)

未测试