在事务检查中,第一次更新成功



我打算编写一个SQL事务,如果产品有足够的库存(确保没有两个客户同时成功购买只有1个库存的产品),则插入订单,如下所示:

START TRANSACTION;
UPDATE products SET inventory=inventory-1 WHERE product_id=1 AND inventory>=1;
if (update succeeded) INSERT order ...;
COMMIT;

如何查看产品库存更新是否成功?我一定要做这个手术吗?

您可以实现一个更新后触发器来插入一个订单。您也可以将products.product_id选择到一个变量中,并检查它是否大于0。当然,只有当只有一条products记录需要更新时,这种变量方法才有效。如果有多个这样的记录,那么可以使用游标而不是变量。我认为最简单的方法是实现一个触发器,这样您将在事务中有一个可见的操作,插入将由底层触发器执行。

最新更新