我正在学习 MySQL 事务。我已经搜索过这个问题的答案,但他们似乎都使用 PHP 来完成我想做的工作。这是我正在尝试做的示例:
- 开始交易
- 更新表 1
- 插入表2
- 如果插入成功,a. 然后插入 Table3 并提交。湾。否则回滚事务。
我不明白如何以编程方式确定步骤 3 中的插入是否成功。当然,我可以查询表并查看,但我认为有一些方法可以使用返回值,但似乎只有在我使用 PHP 进行事务时才有效。
这是我正在尝试的代码块 - 它不起作用:
begin;
start transaction;
-- attempt to reduce inventory
update store_inventory set item_qty = item_qty - 2 where id = 1;
update store_inventory set item_qty = item_qty -1 where id = 5;
-- insert the order record and check whether it succeded
insert into store_orders (purchaser_name, purchase_date)
values ('test user', now());
-- if successful, do final insert and commit
if Row_Count() > 0 Then
insert into store_inventory (order_id, inventory_id, item_qty)
values (1, 1, 2),
(1, 2, 1);
commit;
else -- otherwise rollback
rollback;
end if;
end;