`

savepoints

阅读更多
oracle中的savepoints是什么
2007年07月19日 星期四 18:52
给你个例子
SQL> create table test (id number(7));

表已创建。

SQL> insert into test values (3);

已创建 1 行。

SQL> savepoint a;

保存点已创建。

SQL> insert into test values (4);

已创建 1 行。

SQL> select * from test;

ID
----------
3
4


SQL> rollback to a;

回退已完成。

SQL> select * from test;

ID
----------
3

SQL> rollback;

回退已完成。

SQL> select * from test;

未选定行



事务中的Savepoints

你可以在事务上下文中声明称为savepoint的中间标记。Savepoint将一个长事务分隔为较小的部分。

使用savepoint,你可以在长事务中任何点任意标记你的操作。然后你可以选择回滚在事务中当前点之前、声明的savepoint之后执行的操作。比如,你可以在一长段复杂的更新中使用savepoint,如果犯了个错,你不需要重新提交所有语句。

Savepoints在应用程序中同样有用。如果一个过程包含几个函数,那可以在每个函数前创建一个savepoint。如果一个函数失败,返回数据到函数开始前的状态并在修改参数或执行一个恢复操作后重新运行函数就非常容易。

在回滚到一个savepoint后,Oracle释放由被回滚的语句持有的锁。其他等待之前被锁资源的事务可以进行了。其他要更新之前被锁行的事务也可以执行。

当一个事务回滚到一个savepoint,发生下列事件:

1. Oracle仅回滚savepoint之后的语句。

2. Oracle保留这一savepoint,但所有建立于此后的savepoints丢失。

3. Oracle释放在该savepoint后获得的所有表、行锁,但保留之前获得的所有锁。

事务保持活动并可继续。

无论何时一个会话在等待事务,到savepoint的回滚不会释放行锁。为了确保事务如果无法获得锁也不会悬挂(hang),在执行UPDATE或DELETE前使用FOR UPDATE ... NOWAIT。(这里指回滚的savepoint之前获得的锁。该savepoint后获得的行锁会被释放,之后执行的语句也会被彻底回滚。)

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Delphi SQLite Wrapper 2.1.2(2012-08-21)

    4、支持任何Sqlite的SQL命令并遍历结果集、可以使用准备好的查询、可以使用参数化查询、可以使用事务(包括保存点[savepoints])、可以定义自己的UDF(用户定义的SQL函数)、可以定义自己的排序规则;

    Introduction to Apache Flink

     Savepoints: Versioning State  End-to-End Consistency and the Stream Processor as a Database  Flink Performance: the Yahoo! Streaming Benchmark  Conclusion Chapter 6 Batch Is a Special Case of ...

    MySql存储过程编程.chm

    Working with Savepoints Section 8.4. Transactions and Locks Section 8.5. Transaction Design Guidelines Section 8.6. Conclusion Chapter 9. MySQL Built-in Functions Section 9.1. String ...

    Sql for mysql

    CHAPTER 1 Introduction to MySQL . . . . . . . . . ....1.1 Introduction ....1.2 Database, Database Server, and Database Language....1.3 The Relational Model .... ....1.5 The History of SQL ....1.6 From Monolithic via ...

    Doctrine ORM for PHP.pdf

    Table of Contents Introduction....................................................................................................13 Code Examples.........................................................

    FlinkDay02五藏FlinkModelandModules.pdf

    公司:阿里巴巴职位:高级开发工程师演讲者:宋辛童 主要章节: Levels of Abstraction Programs and Dataflows Parallel Dataflows Windows Time Stateful Operations Checkpoints for Fault ...Savepoints

    mysql学习笔记之数据引擎

    查看当前数据库支持的引擎 show engines +--------------------+---------+-----------------------...| Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------

    sqalx:sqlx的嵌套事务

    斯卡尔克斯 sqalx(发音为“ scale-x”)是在之上构建的库,它允许无缝创建嵌套事务,并避免考虑是否在事务内调用函数。 使用sqalx,您可以轻松创建可重用和可组合的函数,这些函数可在事务内或事务外调用,并可自行...

Global site tag (gtag.js) - Google Analytics