You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL表中为多级价格设置CHECK约束?

为MySQL表添加CHECK约束实现价格层级验证

可以通过添加CHECK约束实现你要求的价格层级规则,但需要注意MySQL 8.0.16及以上版本才会强制执行CHECK约束,在此之前的版本虽然允许定义CHECK,但不会实际生效。

约束规则对应的CHECK条件

需要验证两组逻辑:

  • 生产者价格 < 对应批发价格:producer_price1 < wholesale_price1、producer_price2 < wholesale_price2、producer_price3 < wholesale_price3
  • 批发价格 < 对应零售价格:wholesale_price1 < retail_price1、wholesale_price2 < retail_price2、wholesale_price3 < retail_price3

为现有表添加CHECK约束

执行以下ALTER TABLE语句,将所有约束条件整合到一个CHECK约束中:

ALTER TABLE crop_products_price
ADD CONSTRAINT chk_price_hierarchy
CHECK (
    producer_price1 < wholesale_price1
    AND producer_price2 < wholesale_price2
    AND producer_price3 < wholesale_price3
    AND wholesale_price1 < retail_price1
    AND wholesale_price2 < retail_price2
    AND wholesale_price3 < retail_price3
);

补充建议

价格属于精确数值类型,使用float可能存在精度丢失问题,建议将所有价格字段的类型改为decimal(10,2)(可根据实际业务需求调整精度范围),避免因浮点误差导致约束验证异常。

内容的提问来源于stack exchange,提问作者Tesfaye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 11:52:03