发新话题
打印

Oracle中的事务之savepoint

Oracle中的事务之savepoint

一、基本概念

 

保存点savepoint是事务中的一点,通过rollback可以返回到某个保存点。

一个事务中可以有多个保存点。一旦事务提交,该事务中的保存点会自动被删除,那么无论刚才做了多少个保存点,都统统没有了。

 

SQL> savepoint sp;

 Savepoint created

 SQL> delete from mytable;

 15 rows deleted

 SQL> rollback to sp;

 Rollback complete

 SQL> select count(*) from mytable;

   COUNT(*)

----------

        15

删除操作就被回退了。

 

二、详解

事务的几个重要操作

1、 设置保存点 savepoint a 

2、 取消部分事务 rollback to a 

3 、取消全部事务 rollback

若执行SQL> commit;提交操作,则该事务中所有保存点都不存在了。
如果没有手动执行commit而是exit会自动提交。

 

 

Oracle-drop和flashback

Drop后的被放在回收站(user_recyclebin)里,而不是直接删掉。这样,回收站里的表信息就可以被恢复,或彻底清除。

1.通过查询回收站user_recyclebin(表)获取被删除的表信息,然后使用语句

flashback table <user_recyclebin.object_name or user_recyclebin.original_name> to before drop [rename to <new_table_name>];
将回收站里的表恢复为原名称或指定新名称,表中数据不会丢失。
若要彻底删除表,则使用语句:drop table emp purge;

2.清除回收站里的信息
清除指定表:purge table <table_name>;
清除当前用户的回收站:purge recyclebin;
清除所有用户的回收站:purge dba_recyclebin;

TOP

发新话题