【问题标题】:Unique Constraint Allow Null for One column in OracleOracle中一列的唯一约束允许为空
【发布时间】: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


【解决方案1】:

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

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

未测试

【讨论】:

  • 感谢大卫·奥尔德里奇
  • @S.NisarAhmad,如果这回答了您的问题,请将其标记为正确。
猜你喜欢
  • 1970-01-01
  • 2010-11-23
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 2013-12-07
相关资源
最近更新 更多