要么,你一条一条来,当某个 update 的的影响行数是 0 时,你 rollback ,要么,你有一个预期有多少行会受影响,如果实际影响的行数与预期不符,你 rollback 。异常这种东西一般发生在你代码里,跟数据库有什么关系。
@Plutooo 他这个就是为了保证库存一致性的 并发不大的情况 @Transaction 后 可以按正常逻辑顺序来写 SQL 比如先减产产品库存表 查出来后 for update 加锁 再去加产品包表的库存 不需要 case when
事务开启; 结果=false; do{ 执行 1 成功往下走,不成功 break; 执行 2 成功往下走,不成功 break; ...... 结果=true; }while(false);//保证只执行 1 次。 如果 true commit; 如果 false callback;