在 Oracle 数据库上,如果我有一个可空列和同一列上的检查约束将值限制为“ABC”或“DEF”,我可以在该列中插入一个具有空值的行(假设 null 不是约束值之一)?
最佳答案
您可以在 Oracle Concepts manual 中阅读检查(和其他)约束.
在您的情况下,是的,您可以插入具有空值的行,因为检查约束(例如 mycolumn in ('ABC', 'DEF')
有效地变为 NULL in (' ABC', 'DEF')
当 mycolumn 为 null 时。此 bool 表达式本身将计算为 null,就像 null = 'ABC'
一样,因为 null 是“未知的”。并检查仅当约束的计算结果为 false
时才会违反约束。因此,您的约束允许您将“ABC”、“DEF”或 null 插入列中。
关于Oracle 约束和空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34590113/