Postgresql postgres添加约束,以确保在另一列不为null的情况下一列不为null
博士后9.3 我有两个整型列“a”和“b”。有效选项包括:Postgresql postgres添加约束,以确保在另一列不为null的情况下一列不为null,postgresql,constraints,Postgresql,Constraints,博士后9.3 我有两个整型列“a”和“b”。有效选项包括: “a”为空,“b”为空 “a”不为空,“b”为空 “a”不为空,“b”不为空 我正在尝试添加一个检查/约束,以防止无效选项: “a”为空,“b”不为空 如果有任何帮助,我将不胜感激 提前谢谢 Dan看起来您的情况实际上是一种逻辑含义:如果a为空,则b为空。从我们的符号逻辑课程(我的例子是PHIL 140),我们知道: (P -> Q) <-> (-P | Q) 因此,一个简单的检查(a不为null或b为nul
- “a”为空,“b”为空
- “a”不为空,“b”为空
- “a”不为空,“b”不为空
- “a”为空,“b”不为空
Dan看起来您的情况实际上是一种逻辑含义:如果
a为空
,则b为空
。从我们的符号逻辑课程(我的例子是PHIL 140),我们知道:
(P -> Q) <-> (-P | Q)
因此,一个简单的检查(a不为null或b为null)
约束就足够了
演示:感谢您的快速响应,我一直在尝试检查它不是无效选项,而不是检查它是正确选项之一。谢谢,这是一个非常简洁的解决方案。遗憾的是没有隐含运算符,我的检查约束充斥着
-(p->Q)(-p|Q)
comments来提醒自己逻辑到底表达了什么。@muistooshort:你可以使用P::int-Q::int@shaunc:我尽量避免添加自己的操作员,这样可以减少随身携带的行李。我可能会选择-P::int+Q::int>=0
,因为它更容易识别,因为我已经使用了-P | Q
很多次:)听起来不错:)--请确保用括号括起来
(P -> Q) <-> (-P | Q)
a is not null or b is null