也许在 JDBC 3.0 中最令人兴奋的附加特点就是 Savepoint 了。JDBC 2 中的事务支持让开发人员可以控制对数据的并发访问,从而保证持续数据总是保持一致的状态。可惜的是,有时候需要的是对事务多一点的控制,而不是在当前的事务中简单地对每一个改变进行回滚。在JDBC 3.0 下,可以通过 Savepoint 获得这种控制。Savepoint 接口允许您将事务分割为各个逻辑断点,以控制有多少事务需要回滚。下图3 将说明如何在事务中运用 Savepoint。
你或许不是经常需要使用 Savepoint。然而,在一种普遍的情况下 Savepoint 会发挥作用,那就是您需要作一系列的改变,但是在知道所有的结果之前不能确定应该保留这些改变的哪一部分。下面的代码示例说明了如何使用 Savepoint 接口。
......
conn.setAutoCommit(false);
// Set a conservative transaction isolation level.
conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
Statement stmt = conn.createStatement();
int rows = stmt.executeUpdate( "INSERT INTO authors " +
" (first_name, last_name) VALUES " +
" ('Ghq', 'Wxl')");
// Set a named savepoint.
Savepoint svpt = conn.setSavepoint("NewAuthor");
// …
rows = stmt.executeUpdate( "UPDATE authors set type = 'fiction' " +
"WHERE last_name = 'Wxl'");
// …
conn.rollback(svpt);
// …
// The author has been added, but not updated.
conn.commit();
分享到:
相关推荐
而SavePoint则是事务管理中的一个重要概念,用于在事务中设置恢复点。这篇12页的PDF文档,"JDBC事务管理及SavePoint示例Java开发Java经验技巧",很可能是详细讲解了这两个主题,并提供了一些实际的编程示例。 首先...
事务的保存点是指在事务中设置的一些检查点,用户可以在事务中使用 savepoint 命令来设置保存点,然后在需要时使用 rollback to savepoint 命令来回滚到保存点。保存点的使用可以使用户在事务中灵活地控制事务的执行...
在Oracle中有效地使用事务处理对于维护数据的完整性和一致性至关重要。通过正确地设置事务属性、提交或回滚事务,以及利用保存点进行精细控制,可以确保数据库操作的安全性和可靠性。理解和掌握这些概念和技巧,对于...
2. **使用Savepoint**:在大型事务中,可能需要在事务内部设置多个保存点,以便在出现问题时,可以选择性地回滚到特定的保存点,而不是回滚整个事务。`setSavepoint(String savepointName)`用于设置保存点,`...
在本文中,我们将探讨如何在VB.NET和C#中使用Oracle数据库事务,重点在于理解数据库事务的基本概念,如何创建和管理OracleTransaction对象,以及如何设置事务保存点。 首先,了解数据库事务的基本原理是必要的。...
当你在方法上使用`@Transactional(propagation = Propagation.NESTED)`时,Spring会在现有事务(如果有)中启动一个新的子事务。 2. **Savepoint**:在子事务开始时,Spring会自动创建一个保存点。如果子事务内部...
4. 回滚事务:如果在事务过程中发生错误,可以使用`ROLLBACK`命令撤销所有更改,恢复到事务开始前的状态。在银行交易中,如果转账失败,需要确保原账户的金额不被改变,此时会回滚事务。 5. 保存点:在大型事务中,...
2. **存储点(Savepoint)**:实验提到了存储点回滚,这允许在事务中设置多个回滚点,当需要部分回滚事务时,可以使用`ROLLBACK TO SAVEPOINT`回到特定的存储点,而不是完全回滚整个事务。 3. **并发控制**:在多...
在"transaction.sql"文件中,我们可能看到示例代码展示了如何在SQL Server中使用事务。以下是一些可能包含的关键点: 1. **BEGIN TRANSACTION**:启动一个新事务。这标志着事务的开始。 2. **COMMIT TRANSACTION**...
以下是一个简单的示例,展示如何在MSSQL中使用事务处理两个表的更新操作: ```sql BEGIN TRANSACTION UPDATE a SET id=232 WHERE a=1 SET @errorSun=@errorSun+@@ERROR UPDATE aa SET id=2 WHERE a=1 SET @...
在PostgreSQL中,你可以通过SAVEPOINT命令来设置一个子事务,如`SAVEPOINT name`,其中`name`是你为子事务指定的唯一标识符。一旦设置,如果后续的操作出现错误,你可以使用`ROLLBACK TO SAVEPOINT name`来回滚到这...
此外,Oracle数据库支持事务的保存点(SAVEPOINT),这是一种在事务中设置的标记,允许在回滚时只回滚到保存点,而不是整个事务。这在需要部分撤销操作但又不想完全回滚事务的情况下非常有用。 总的来说,Oracle在...
例如,如果在事务中使用`ROLLBACK TO SAVEPOINT sp1`,只有在保存点之后的操作会被撤销。 6. **事务的使用和影响** 在并发环境中,事务的隔离级别和管理对于避免数据冲突至关重要。不同的隔离级别会影响并发性和...
- 考虑使用SavePoint,在事务内部可以部分回滚,但只回滚到指定的保存点,而不是整个事务。 总结来说,C#中的事务处理机制是通过ADO.NET与数据库交互的关键部分,它确保了数据库操作的正确性和一致性。结合控件...
在大量连续的写操作中,使用事务可以提高性能,因为 SQLite 只在事务结束时将所有更改写入磁盘。这减少了磁盘 I/O 操作,提升了整体效率。 7. 事务的原子性: 事务的原子性意味着事务中的所有操作要么全部完成,...
- `SAVEPOINT`:在事务中设置一个保存点,可以在此之后的部分回滚。 - `RELEASE SAVEPOINT`:删除一个保存点。 5. **事务隔离级别** 数据库系统提供了四种事务隔离级别,以平衡数据一致性和性能: - 读未提交...
保留点(Savepoint)允许在事务中设置多个恢复点,方便局部回滚。 **JDBC**中,事务管理通常通过Connection对象的auto-commit属性控制。默认情况下,auto-commit为true,每次SQL执行即视为一个事务。若需手动控制...
在本篇博文中,我们将深入探讨JDBC中的保存点处理,了解其工作原理以及如何在实际应用中使用它。 首先,我们需要理解JDBC事务的基本概念。JDBC支持四种事务隔离级别,包括读未提交(READ UNCOMMITTED)、读已提交...
SAVEPOINT允许在事务中设置多个恢复点,这样在需要时可以回滚到特定的保存点,而不是全部撤销: ```sql SAVEPOINT my_savepoint; ROLLBACK TO SAVEPOINT my_savepoint; ``` 管理锁是事务控制的另一个方面,它们...