在postgres sql中,有没有一种方法可以通过约束检查(或其他函数)对以下行为进行建模:
我有两列:
oncost (boolean) oncostdescription (varchar)
如果oncost是 true
,我想要 oncostdescription
必须( NOT NULL
, NOT EMPTY
)
如果concost是 false
,我想要 oncostdescription
不是强制性的( NULL
, EMPTY
)
编辑:
我忘了说我的博士后版本低于12。
有些人想出了一个很酷的功能叫做 generated columns
.
看起来很酷。但前提是你有12+
3条答案
按热度按时间x7rlezfr1#
你可以使用
check
约束条件:此短语为:要么布尔标志为false,要么描述既不为null也不为空。
您也可以将其表示为:
smdnsysy2#
如果我理解正确,生成的列可能会执行您想要的操作:
这假设你想要
oncost
作为指示是否oncostdescription
有一个值——这与问题的措辞是一致的。csga3l583#
这个
oncost
列是冗余的(完全依赖于oncostdescription
),因此可以根据需要进行计算。postgres-12支架generated always as ...
柱:结果:
和西塞
oncost
字段是可计算的,它也可以打包在视图中:(具有完全相同的结果)