postgres:约束检查和空值

slo*_*oth 13 database postgresql constraints

请看下表:

   name  |  x  |  y
---------+-----+------
   foo   |  3  |  5
   bar   | 45  | 99 
  foobar | 88  | 
  barfoo |  0  | 45
Run Code Online (Sandbox Code Playgroud)

我想添加一个约束CHECK(y> x),但是这显然会失败,因为行'foobar'违反了它.

如何创建一个约束:check(y> x),但仅当y不为null?

Jor*_*bot 21

事实上,你真的不需要做任何其他事情.如果检查表达式的计算结果为true或null值,则满足检查约束.

你的约束CHECK(y> x)将在你的场景中工作,因为行foobar不会违反约束,因为它的计算结果为null