ROLLBACK 没有保存点限定符将回滚整个当前事务。
对于 DDL 语句,没有要回滚的当前事务。DDL 语句COMMIT在语句开始之前和完成之后隐式生成一个。因此,如果您发出ROLLBACK以下 a DROP,则当前事务中尚未完成任何工作,因此没有任何可回滚的内容。
对于 DML 语句,您将回滚整个当前事务。如果你这样做
当您执行INSERT操作时,您的交易就开始了。因此,当您发出 时ROLLBACK,您将同时回滚 theINSERT和 the,DELETE因此表中没有数据(假设您开始时没有数据)。如果您COMMIT在 之后,INSERT则下一个事务将以 开始,DELETE并且您ROLLBACK只会回滚该DELETE操作。或者,您可以在 之后声明一个保存点INSERT并回滚到该保存点
SQL> create table foo( col1 number );
Table created.
SQL> insert into foo values( 1 );
1 row created.
SQL> savepoint after_insert;
Savepoint created.
SQL> delete from foo;
1 row deleted.
SQL> rollback to savepoint after_insert;
Rollback complete.
SQL> select * from foo;
COL1
----------
1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8744 次 |
| 最近记录: |