我已经阅读了本教程:http ://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html但我认为我仍然缺少一些东西。
让我们举个例子:
- 线程 T1 有自己的 Connection
- 线程 T2 有自己的 Connection
因此,这些线程执行一个事务(setAutoCommit(false) 在两个不同的连接上)。此事务在单个数据库表上执行以下查询:
- 选择一行以读取累进数字 (PN)
- 插入一行将渐进数设置为:PN++(我
读过的内容+1)
此表中的累进数字必须是唯一的(它是主键)。
JDBC Transactions(带有 TRANSACTION_READ_COMMITTED 隔离级别)是否避免了 T1 和 T2 读取相同的 PN 值并尝试在表中插入相同的 PN++ 的问题?在执行插入并调用 commit() 之前,表是否被锁定?