使用 Oracle 可以(使用单个数据库连接):
- 锁定单行 (row1)
- 然后锁定另一行(row2)
- 释放 row1 上的锁(保留 row2 上的锁)
- 获得另一行(row3)的锁
- 释放 row2 上的锁(保留 row3 上的锁)
- 释放第 3 行的锁
我意识到 Oracle 支持许多不同类型的锁(我发现这很有帮助:http ://broadh2o.net/docs/database/oracle/oracleLocks.html ),所以答案可能取决于选择哪种锁。我对独占锁感兴趣——即阻止其他连接更新行的锁。
我想知道我是否可以使用单个数据库连接执行操作 1-6。我当然可以为每一行使用单独的数据库连接。似乎锁是使用 COMMIT/ROLLBACK 释放的,因此这表明不可能释放单行上的锁。