mysql - 根据其他列值检查约束
问题描述
我有一个名为Table1的表,其中包含三列col1、col2、col3。col1 可以具有三个值之一(1 或 2 或 3)。
我需要添加一个检查约束,以便它检查,如果 col1 的值为 1,那么 col2 和 col3 的值应该相同,否则如果 col1 的值为 2 或 3,那么 col2 和 col3 的值可能相同也可能不同。
谁能告诉我如何为此添加约束?
提前致谢。
解决方案
您可以像这样添加检查约束:
ALTER TABLE Table1 ADD CONSTRAINT chk_table1_cols
CHECK ( (col1 = 1 AND col2 = col3) OR (col1 IN (2, 3)) );
请注意,“相同”假定值不是NULL
. NULL
如果您想将值视为相等,则可以添加该逻辑。
推荐阅读
- javascript - 如何在组件中呈现动态 HTML?
- twitter-bootstrap - Twitter Bootstrap 应该支持 toast 吗?
- android - react native - 当初始项目“未定义不是函数(评估'reactDevTools.connectToDevTools')”时崩溃
- python - 如何在 python 中使用 web.py 处理上传的 csv 文件
- scala - 为什么scala shell中定义的类是public static
- php - 使用 Sf4 进行 Lexik JWT 身份验证:未捕获的异常:无法找到路径“/login_check”的控制器
- angular - 电子构建窗口没有全屏(workAreaSize,workArea,maximize)不起作用
- php - WooCommerce 电子邮件通知中基于产品类别的不同收件人
- java - 如何使用 Vaadin 上传图像 Java Spring 应用程序
- r - 如何在 R 的 chartSeries 中添加另一个烛台图?