我有两个表格(saleitem
,balance
),当客户购买任何商品时,必须将其插入saleitem
并从balance
中扣除。
所以我创建了一个手动提交连接,如果所有语句都正常,我提交连接。
第一个SQL语句是saleitem
的简单INSERT,第二个SQL语句是带有条件的UPDATE:
UPDATE balance SET amount = amount - ? WHERE walletid = ? AND userid = ? AND amount >= ?;
当我有自动提交连接时,我可以检查preparedStatement.executeUpdate()
是否超过0
。
但是当我手动提交连接时,这不起作用。
现在,如果我将新的促销项目插入saleitem
表,并且用户的钱包中没有钱(balance
表中),则会插入saleitem
但是余额未更新。
如果余额不足或walletid
不存在,我不想进行插入和更新,但rollback()
此次交易
如何检查多个SQL语句的持久性成功,然后在手动提交连接时提交它们?