SQL冗余非空约束

SQL冗余非空约束,sql,constraints,Sql,Constraints,当我添加一些约束时,例如: create table Test( IDTest int primary key, Credit int not null constraint Credit check (Credit >= 0) ); 在这种情况下,Credit中的notnull不是多余的吗?因为我添加了一个约束,即Credit必须高于0?否,它不是多余的 如果条件不是FALSE,则检查约束接受一个值,因此无论它是TRUE还是未知 如果在列中允许空值,则NULL>=0将计算为

当我添加一些约束时,例如:

 create table Test(
  IDTest int primary key,
  Credit int not null constraint Credit check (Credit >= 0)
 );

在这种情况下,
Credit
中的
notnull
不是多余的吗?因为我添加了一个约束,即
Credit
必须高于0?

否,它不是多余的

如果条件不是
FALSE
,则
检查
约束接受一个值,因此无论它是
TRUE
还是
未知


如果在列中允许空值,则
NULL>=0
将计算为
UNKNOWN
,并通过测试。

注意:一些(MySQL…)SQL引擎会自动忽略
CHECK
约束。谢谢,使所有的意义都是这样的:“R排序:考虑另一种选择:如果要求条件必须是真的,那么每个涉及可空列的约束都必须显式地测试空值,这将是一个很大的噪音和痛苦!