Savepoint 和 部分回滚(Partial Rollback)
在SQL和PL/SQL中Savepoint是在一事务范围内的中间标志。经常用于将一个长的事务划分为小的部分。保留点Savepoint可标志长事务中的任何点,允许可回滚该点之后的操作。在应用程序中经常使用Savepoint;例如一过程包含几个函数,在每个函数前可建立一个保留点,如果函数失败,很容易返回到每一个函数开始的情况。在回滚到一个Savepoint之后,该Savepoint之后所获得的数据封锁被释放。为了实现部分回滚可以用带TO Savepoint子句的ROLLBACK语句将事务回滚到指定的位置。
例
BEGIN
INSERT INTO ATM_LOG(who,when,what,where)
VALUES ('Kiesha',SYSDATE,'Withdrawal of $100','ATM54')
SAVEPOINT ATM_LOGGED;
UPDATE checking
SET balance=balance-100
RETURN balance INTO new_balance;
IF new_balance<0
THEN
ROLLBACK TO ATM_LOGGED;
COMMIT
RAISE insufficient_funda;
END IF
END
分享到:
相关推荐
在SQL3标准中,设置保存点的语句是SAVEPOINT <savepoint specifier>,部分回滚语句是ROLL BACK TO SAVEPOINT <savepoint specifier>,撤消保存点语句是RELEASE SAVEPOINT <savepoint specifier>。保存点只在事务活动...
`,并使用`ROLLBACK TO SAVEPOINT`命令回滚到该保存点,例如`ROLLBACK TO SAVEPOINT my_savepoint;`。 在描述中提到的“mysql begunfqh detailrj2”可能是某种特定的上下文或者问题情境,但没有足够的信息来详细...
手动事务管理通常通过`Connection`对象的`setAutoCommit(false)`方法来关闭自动提交,然后通过`commit()`和`rollback()`方法来控制事务的提交和回滚。下面是一个简单的示例: ```java try (Connection conn = ...
SQL回滚(Rollback)是事务处理中的一个重要组成部分,它允许用户撤销未提交的事务更改,将数据库状态恢复到事务开始之前的状态。 #### 什么是SQL回滚? SQL回滚是指在执行一系列数据库操作后,如果发现这些操作...
使用`Connection`对象的`setSavepoint(String savepointName)`方法可以设置SavePoint,`rollback(Savepoint savepoint)`方法则可以回滚到指定的SavePoint。 例如,以下是一个简单的Java代码示例,展示了如何使用...
但在复杂的数据库操作中,通常推荐使用显式事务控制,以便更好地管理事务的边界和回滚范围。 在实际应用中,例如员工管理系统,当需要删除一个部门时,可以将删除部门和关联的员工作为一个事务来处理。首先,启动...
在SQL中,可以使用SAVE TRANSACTION savepoint_name创建保存点,并通过ROLLBACK TRANSACTION savepoint_name回滚到该点。在创建的存储过程中,如果在更新“student”表时出错,可以回滚到"point"保存点,仅撤销最后...
提交(COMMIT)和回滚(ROLLBACK)是控制事务的主要操作。COMMIT用于确认事务中的所有操作,使它们永久生效,而ROLLBACK则用于撤销事务中已完成的工作,将数据恢复到事务开始前的状态。SAVEPOINT允许在事务中设置一个...
`SAVE TRANSACTION`创建一个保存点,而`ROLLBACK TO SAVEPOINT`则回滚到指定的保存点,这样可以在不完全撤销整个事务的情况下撤销部分操作。 通过这个实验,学生将能够熟练运用SQL Server的事务管理命令,理解事务...
1. **Savepoint 和 部分回滚** - Savepoint允许在事务中设置保存点,以便部分回滚事务。 - 示例代码: ```sql SAVEPOINT my_savepoint; ROLLBACK TO SAVEPOINT my_savepoint; ``` 2. **一致性和事务** - ...
- 通过ROLLBACK命令可以撤销事务的一部分或全部操作,使数据库回滚到事务开始前的状态。选项B正确。 - 通过COMMIT命令,可以将事务的一部分或全部永久保存到数据库中,使其成为不可逆的操作。选项D正确。 2. **...
- `SET TRANSACTION`:设置事务的特性,如一致性级别和回滚段。 4. 示例: ```sql BEGIN UPDATE checking SET balance=balance-5000 WHERE account='Kieesha'; INSERT INTO checking_log(action_date,action,...
3. **事务控制语言(TCL)**:用于管理事务,包括提交(commit)、保存点(savepoint)和回滚(rollback)。 4. **数据控制语言(DCL)**:用于控制数据访问权限,包括授予(grant)和撤销(revoke)用户的权限。 #### 五、Oracle...
- **事务控制语言 (TCL)**:用于管理数据库事务,如提交(COMMIT)、保存点(SAVEPOINT)和回滚(ROLLBACK)等。 - **数据控制语言 (DCL)**:用于管理数据库权限,如授予(GRANT)和撤销(REVOKE)权限。 #### 2. Oracle数据...
DTM包括提交(COMMIT)、回滚(ROLLBACK)和保存点(SAVEPOINT)。DDL和DCL操作会立即提交事物,而DML操作在SQL2005中会自动提交,与Oracle不同。 6. **存储过程**:存储过程是预编译的SQL语句集合,可以接受输入...
ROLLBACK TO SAVEPOINT my_savepoint; ``` 管理锁是事务控制的另一个方面,它们用于控制并发访问数据,防止冲突和数据不一致。Oracle提供了多种类型的锁,如共享锁(读锁)和独占锁(写锁),以实现不同级别的并发...
这是通过事务的日志记录和回滚机制实现的,当事务异常结束时,系统可以根据日志回滚到事务开始前的状态。 事务的并发控制是解决并发访问可能导致的问题的关键,包括: 1. 丢失修改:两个事务同时修改同一数据,...
在处理复杂的数据库操作时,保存点(Savepoint)是一个非常有用的工具,特别是在需要部分回滚事务的情况下。本文将详细介绍如何在JDBC中设置和管理事务的保存点。 首先,了解JDBC中的事务控制。在默认情况下,JDBC...
- JDBC支持事务的提交、回滚和隔离级别设置,通过`Connection`对象的`commit()`、`rollback()`和`setTransactionIsolation()`方法实现。 6.批处理: - 对于多条相似的SQL语句,批处理可以提高性能。`addBatch()`...
- **部分回滚**:通过`ROLLBACK TO SAVEPOINT A`回滚到存储点A。 - **全部回滚**:`ROLLBACK`将撤销所有未提交的更改。 - **只读事务**:`SET TRANSACTION READ ONLY`确保用户只能获取某个时间点的数据,无法进行...