【问题标题】:How to verify if quantity exists before update如何在更新前验证数量是否存在
【发布时间】:2021-03-14 05:45:34
【问题描述】:

如果用户尝试在订单中插入的数量大于可用数量,我想创建一个引发错误的触发器或存储过程。

所以基本上,我有 2 个表:Order_Product 具有 OrderId、Product_Id 和 Quantity,以及 Inventory 具有 Product_Id 和 Quantity。因此,如果用户尝试在 Order_Product 中为特定 product_id 插入数量大于 Inventory 中相同 product_id 可用数量的行,则在插入之前抛出错误。

提前谢谢你。

【问题讨论】:

  • 我靠向扳机并发出信号dev.mysql.com/doc/refman/8.0/en/signal.html
  • 如果用户尝试在 Order_Product 中为特定 product_id 插入一行,其数量大于 Inventory 中相同 product_id 的可用数量 用户是否可以插入 2 行哪个单独匹配但总和超大?这合法吗?

标签: mysql sql stored-procedures triggers sql-insert


【解决方案1】:

我认为以下触发器可以满足您的要求:

delimiter //

create trigger trg_order_product_insert
before insert on order_product
for each row
begin
    if (new.quantity > (select quantity from inventory where product_id = new.product_id)) then
        signal sqlstate '45000' set message_text = 'not enough quantity available in inventory';
    end if;
end
//

delimiter ;

有了这个设置,您还需要考虑如何使inventory 表中的可用数量保持最新。您可能希望将update 语句添加到上述触发器,以减少产品的库存。

【讨论】:

  • 谢谢!我已经有一个触发器执行此操作,但仅在 order_product 表上插入之后。
猜你喜欢
  • 1970-01-01
  • 2011-08-20
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
  • 1970-01-01
  • 2013-06-12
相关资源
最近更新 更多