目前有三个表:suppliers:supplier_id 主键parts:parts_id 主键
parts_color catalog:supplier_id 
parts_id 
( supplier_id parts_id 为联合主键 )
price现要建议一个约束,要求用SQL代码实现:对于一个supplier,他所supply的颜色为green的parts的price,必须比他所supply的所有颜色为red的parts的price的平均值要小。求助实在没写出来

解决方案 »

  1.   

    写个函数求某个supplier_id 的“所supply的所有颜色为red的parts的price的平均值”,然后写check调用函数就好实现。问题是,在green的添加时允许(符合条件)所谓情况下,再添加red的记录是否也应该约束,不能使得red的平均值大于已添加的green地价格?如果需要,则需要添加两个约束,或者一个约束,但是逻辑较复杂。这类业务性较强的逻辑,放在约束理论上是可以的,但是必须考虑对性能的影响,最好在业务逻辑层校验。