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 次 |
最近记录: |