首页 > 解决方案 > 根据其他列值检查约束

问题描述

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

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

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

提前致谢。

标签: mysqlsqlcheck-constraints

解决方案


您可以像这样添加检查约束:

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

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


推荐阅读