日期:2014-05-17  浏览次数:21201 次

这个保存点是怎么回事啊
SQL> savepoint s1;

保存点已创建。

SQL> commit;

提交完成。

SQL> drop table employee_hope;

表已删除

SQL>rollback to s1;
rollback to s1
*
第 1 行出现错误:
ORA-01086: 从未创建保存点 'S1'




------解决方案--------------------
第一 你已经commit 所以保存点已经不存在了 
第二 你执行了drop的ddl语句, 这个是隐式提交的 。
也会重置检查点
------解决方案--------------------
概念混淆啊,请先参考下面的内容:
回滚一般是回到事务开始时状态。也可以事先在一个事务中设置一些保留点,然后可以回滚事务到指定的保留点,而保留点之前的工作仍然有效。

设置保留点:SAVEPOINT 保留点名字。
回滚到指定保留点:ROALLBACK TO 保留点名字。

可以在任何地方设置一个保存点,这样可以将修改回滚到保存点处。
当一个事务很大时,应该将其分割成一系列小的事务,并适当设置保存点。

你已经commit;则事务已经结束,那设置的保留点已经不存在了,这很正常啊。


------解决方案--------------------
探讨

概念混淆啊,请先参考下面的内容:
回滚一般是回到事务开始时状态。也可以事先在一个事务中设置一些保留点,然后可以回滚事务到指定的保留点,而保留点之前的工作仍然有效。

设置保留点:SAVEPOINT 保留点名字。
回滚到指定保留点:ROALLBACK TO 保留点名字。

可以在任何地方设置一个保存点,这样可以将修改回滚到保存点处。
当一个事务很大时,应该将其分割成一系列小的事……

------解决方案--------------------
探讨
SQL> savepoint s1;

保存点已创建。

SQL> commit;

提交完成。

SQL> drop table employee_hope;

表已删除

SQL>rollback to s1;
rollback to s1
*
第 1 行出现错误:
ORA-01086: 从未创建保存点 'S1'