使用savepoint sp_begintran就可以了
如:
系列SQL或者DML语句;
savepoint sp_begintran; ---------设置回滚点
系列DML语句;
commit work;
这儿commit work;总是提交与其最近的回滚点
execute执行后
可以回滚
commit提交后
不可以回滚
其实oracle提交数据是分两步操作的,第一步execute执行,第二步commit提交.对应的pl\sql也是要先点execute执行,执行后再点commit提交.
但是
可以用闪回查询恢复原来的数据
因为oracle会将近期的数据保存到快照中
如:
select
*
from
table_1
as
of
timestamp
table_1是数据库的表名
这样查询到的数据就是执行更新操作之前的数据
其实Oracle提交数据是分两步操作的,第一步execute执行,第二步commit提交.对应的PL\SQL也是要先点execute执行,执行后再点commit提交.
SELECT
FROM
TABLE_1
AS
OF
TIMESTAMP
TABLE_1是数据库的表名
SQL和PL/SQL中Savepoint一事务范围内中间标志经常用于将一个长事务划分为小部分保留点Savepoint可标志长事务中任何点允许可回滚该点之后操作解决源代码中经常解决Savepoint;例如一过程包含几个函数每个函数前可建立一个保留点如果函数失败很容易返回到每一个函数开始情况回滚到一个Savepoint之后该Savepoint之后所获得数据封锁被释放为了处理方案部分回滚可以用带TO Savepoint子句ROLLBACK语句将事务回滚到指定位置
例
BEGIN
INSERT INTO ATM_LOG(whowhenwhatwhere)
SAVEPOINT ATM_LOGGED;
UPDATE checking
SET balance=balance-100
RETURN balance INTO new_balance;
IF new_balance0
THEN
ROLLBACK TO ATM_LOGGED;
COMMIT
RAISE insufficient_funda;
END IF
END
关键字SAVEPOINT可选所以下面两个语句等价:
ROLLBACK TO SAVEPOINT ATM_LOGGED;
以上就是土嘎嘎小编为大家整理的oracle回滚怎么设置相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!