检查约束

时间:2016-03-23 17:00:45

标签: sql database oracle

我一直致力于创建一个由...组成的表格。

  1. 模块(ModuleID,ModuleTitle,ModuleLeader,Credits, CourseworkPercentage,ExamPercentage)

  2. ModuleID应由序列生成

  3. ModuleTitle和ModuleLeader最多应包含30个字符 应该不是空的
  4. 积分不应为空,且为10,20或40
  5. CourseworkPercentage和ExamPercentage应该加起来
  6. 我已经成功地完成了2,3,5点,但我遇到了问题4.我不知道如何编写一个检查约束来说它必须等于10,20或40。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

尝试:

CHECK( Credits IS NOT NULL AND Credits IN ( 10,20,40))

NOT NULL条件是多余的 - 列必须是10,20或40,所有这些都不是NULL,并且条件可以简化为:

CHECK( Credits IN ( 10,20,40) ) 

答案 1 :(得分:0)

首先看起来检查NULL是多余的,但我最近遇到了另一个post,要求重新查看manual

  

[...]检查约束允许您指定表中每行​​必须满足的条件。为了满足约束,表中的每一行必须使条件为TRUE或未知(由于null)。[...]

所以我建议你更好的用户

CHECK( Credits IS NOT NULL AND Credits IN ( 10,20,40))