根据其他列值检查约束

问题描述 投票:2回答:3

我有一个名为Table1的表,其中包含三列col1,col2,col3。 col1可以具有三个值中的一个(1或2或3)。

我需要添加一个检查约束,以便检查,如果col1的值为1,则col2和col3的值应该相同,否则如果col1的值为2或3,则col2和col3的值可能相同也可能不相同。

谁能告诉我如何为此添加约束?

提前致谢。

mysql sql check-constraints
3个回答
0
投票

您可以使用一系列逻辑运算符表达这些条件:

(col IN (1, 2, 3)) AND (col2 = col3 OR col1 IN (2, 3)

0
投票

我没有验证(我没有MySql)但在Oracle中有以下工作:

ALTER TABLE Table1 ADD
(
  CONSTRAINT CHK_1 CHECK ((col1 BETWEEN 1 AND 3) AND (col1 <> 1 OR col2=col3))
)

0
投票

您可以添加如下检查约束:

ALTER TABLE Table1 ADD CONSTRAINT chk_table1_cols
    CHECK ( (col1 = 1 AND col2 = col3) OR (col1 IN (2, 3)) );

注意“是相同的”假设值不是NULL。如果您想将NULL值视为相等,则可以添加该逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.