我有一个无法运行的 SQL 事务查询。谁能告诉我为什么?我也无法运行它preparedstament.executequery();
。
START TRANSACTION;
SELECT total_installment_remaining FROM payment_loan WHERE loan_id = 1 FOR UPDATE;
UPDATE payment_loan SET total_installment_remaining =total_installment_remaining-1 WHERE loan_id = 1;
COMMIT;
Run Code Online (Sandbox Code Playgroud)
关闭自动提交,然后用于Connection.commit()
结束事务。
connection.setAutocommit(false);
Statement stmt = con2.createStatement();
// this will automatically start a transaction
ResultSet rs = stmt.executeQuery("SELECT total_installment_remaining FROM payment_loan WHERE loan_id = 1 FOR UPDATE");
// process the result if needed
...
stmt.executeUpdate("UPDATE payment_loan SET total_installment_remaining =total_installment_remaining-1 WHERE loan_id = 1");
// end the transaction and persist then changes
connection.commit();
Run Code Online (Sandbox Code Playgroud)
如果您的代码中不需要 SELECT 的结果,那么您根本就不需要SELECT ... FOR UPDATE
,因为UPDATE
无论如何都会锁定行。
归档时间: |
|
查看次数: |
2122 次 |
最近记录: |