Oracle Constraint和null值

时间:2016-01-04 11:27:39

标签: oracle check-constraints

在Oracle数据库上,如果我在同一列上有一个Nullable列和一个检查约束,将值限制为,例如' ABC'或者' DEF',我可以在该列中插入一个空值的行(假设null不是约束值之一)吗?

2 个答案:

答案 0 :(得分:5)

您可以阅读Oracle Concepts manual中的检查(和其他)约束。

在你的情况下,是的,你可以插入一个空值的行,因为当mycolumn为null时,检查约束(例如mycolumn in ('ABC', 'DEF')变为有效NULL in ('ABC', 'DEF')。这个布尔表达式本身会求值为null,只是正如null = 'ABC'所做的那样,因为null是"未知"。只有当它们评估为false时才会违反检查约束。因此,您的约束允许您插入' ABC&#39 ;,' DEF'或在列中为空。

答案 1 :(得分:2)

  

我可以在该列

中插入一个空值的行吗?

是的,您可以将列定义为可为空。如果为列提供非空值,则提供的值必须与CHECK约束中定义的值匹配。

See a live demo here