当所有孩子都符合特定条件时更新父母吗?

时间:2019-09-11 13:46:51

标签: mysql sql

我有两个表,父表salesorders,子表invoices。我有一个存储过程在触发器中运行,该触发器在每次更新invoices表之后运行。我想向该存储过程添加一个UPDATE语句。

现在,salesordersinvoices都有一个state列。我想做的是,当且仅当每个子发票的状态为4或更大时,才将销售订单状态更新为0。一些发票状态也为NULL,如果我有3张发票,其中2张状态为4或更大,其中1张为NULL,则我不想更新销售订单state设为0。

我当时正在考虑将每个销售订单的发票总数与发票状态> 4的数量进行比较,但是我似乎仍然无法正常工作。我该怎么办?

1 个答案:

答案 0 :(得分:0)

这个评论太长了。

首先,我会问您是否真的需要这个。您是否可以优化数据库,以便查询单个销售的查询可以轻松地将所有发票汇总在一起以检查情况?

如果不是,则考虑触发。因为这是触发因素,所以事情可能会变得棘手。我建议添加一列,指定有多少发票不符合条件

您可以仅通过查看当前行来保持最新状态-尽管确实需要比较newold值。

然后,您可以将此值用于销售状态的逻辑。