Oracle 约束和空值

标签 oracle check-constraints

在 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/

相关文章:

java - 如何在 JDBC 中映射 Oracle 对象

java - Oracle TO_DATE 函数在 Mysql 中并行,它应该同时支持 DB oracle 和 mysql

c++ - OCCI - setDataBuffer + vector<结构>

sql - 关于检查约束空值

mysql - MySQL 是否支持检查约束?

database - 为什么要使用 Oracle 数据库?

sql - Oracle regexp_substr - 查找并提取列中的所有匹配项

sql - 请解释 SQLServer 用于创建检查约束的语法

sql - Luhn(信用卡号哈希)可以在没有外部/自定义功能的情况下在 Postgres 中实现吗?

postgresql - 如何在postgresql中禁用检查约束