我有一个名为 Table1 的表,其中有三列 col1 , col2 , col3 。 col1可以具有三个值之一(1或2或3)。
我需要添加一个检查约束,以便检查如果col1的值为1,则col2和col3的值应该相同,否则,如果col1的值为2或3,则col2和col3的值可以相同也可以不相同
谁能告诉我如何为此添加约束?
谢谢。
答案 0 :(得分:0)
您可以使用一系列逻辑运算符来表达这些条件:
(col IN (1, 2, 3)) AND (col2 = col3 OR col1 IN (2, 3)
答案 1 :(得分:0)
我没有验证(我没有MySql),但是在Oracle中,以下工作有效:
ALTER TABLE Table1 ADD
(
CONSTRAINT CHK_1 CHECK ((col1 BETWEEN 1 AND 3) AND (col1 <> 1 OR col2=col3))
)
答案 2 :(得分:0)
您可以添加如下检查约束:
ALTER TABLE Table1 ADD CONSTRAINT chk_table1_cols
CHECK ( (col1 = 1 AND col2 = col3) OR (col1 IN (2, 3)) );
请注意,“相同”假定值不是NULL
。如果您想将NULL
值视为相等,则可以添加该逻辑。