【发布时间】:2017-07-24 11:56:38
【问题描述】:
我有以下表结构
tbl_exam (Year,ExamCode,RollNo)
1)。表中数据为:
(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
)
【问题讨论】:
-
编辑:需要复合键约束
-
你不能。如果您根据这三个键添加唯一约束,那么您显示的前两条记录显然是相同的。我怀疑数据模型不正确,当 RollNo 为空时,您不应该输入记录,或者您需要代理键。
标签: oracle constraints ddl