【发布时间】:2014-05-22 15:33:02
【问题描述】:
我今天在我们的 MySQL 数据库中设计触发器语句时遇到了一个小问题:
我们有以下相关表格:
- 报价(quote_key、date、discount_rate、discount_period、supplier_key)
- part (part_key, part_name, ...)
- part_quote (pq_key, part_price, fk_quote_key, fk_part_key)
- part_approval (papproval_key, is_approved, fk_part_quote_key)
现在解释一下逻辑:
每个供应商都会针对制造过程中的不同投入(例如零件和组件)发布报价。如果某个零件的价格合适,它们将被批准用于制造,因此可以被我们的工程师使用。由于我们希望能够接收来自不同供应商的相同零件的报价以进行比较,因此我尝试使用 part_quote 和 part_approval 表来模拟这个过程。
关于我的问题:如果我想批准新的 part_quote,我希望将所有(或最近的)旧报价中的 BOOL 标志“is_approved”自动设置为 FALSE。
我尝试通过发出触发语句来完成此操作: 在插入 part_approval 之前创建触发器 update_approval 每一行 --- ??
我在选择要更新的正确行时遇到一些问题:
- 如何选择 part_key,它将最终识别所有需要更新的相关行?
- 如何只选择旧的(或最近的)行?
我很想包括一个筛选器,但不幸的是,我还没有 10reps:/
提前非常感谢您, 祝一切顺利, 马吕斯
【问题讨论】:
标签: mysql sql triggers sql-update sql-insert