【发布时间】:2017-07-26 22:11:22
【问题描述】:
我想知道是否有任何方法可以检查一列是否有值,如果值为 XXXXX,则另一列必须在 (A,B,C) 的列表中。 类似:
CREATE TABLE test (a CHAR(60),b CHAR(60),Check (IF a == 'test' THEN b in ('a','b','c')));
【问题讨论】:
标签: sqlite boolean-logic implication
我想知道是否有任何方法可以检查一列是否有值,如果值为 XXXXX,则另一列必须在 (A,B,C) 的列表中。 类似:
CREATE TABLE test (a CHAR(60),b CHAR(60),Check (IF a == 'test' THEN b in ('a','b','c')));
【问题讨论】:
标签: sqlite boolean-logic implication
换句话说,在test 行中,b 必须在列表中,而在非test 行中,b 可以是任何东西。
所以为了检查成功,b 必须在列表中,或者该行不能是 test 行:
CHECK (a <> 'test' OR b IN ('a', 'b', 'c'))
在数学上,a → b 与 ¬a ∨ b 相同。
【讨论】: