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