【问题标题】:triggers statement level atomicity触发语句级原子性
【发布时间】:2009-12-07 11:22:57
【问题描述】:

Oracle 所说的“语句级原子性”是什么意思?

【问题讨论】:

    标签: oracle transactions


    【解决方案1】:

    让我们引用概念中的几个章节:

    Statement-Level Read Consistency

    Oracle 始终强制执行语句级读取一致性。这保证了单个查询返回的所有数据都来自一个时间点——查询开始的时间。因此,查询永远不会看到脏数据,也不会看到在查询执行期间提交的事务所做的任何更改。随着查询执行的进行,只有在查询开始之前提交的数据对查询可见。语句执行开始后,查询不会看到提交的更改。

    Statement-Level Rollback

    如果在执行期间的任何时候 SQL 语句导致错误,则该语句的所有影响都将回滚。回滚的效果就好像该语句从未运行过。此操作是语句级回滚。

    失败的 SQL 语句只会导致它自己执行的任何工作丢失。 它不会导致当前事务中之前的任何工作丢失。

    【讨论】:

      【解决方案2】:

      这意味着您运行的任何单个 SQL 语句本质上都是原子的——它要么完全成功,要么完全失败。如果您的 SQL 语句失败,并且由于该 SQL 语句而运行的触发器也会失败。

      【讨论】:

        【解决方案3】:

        这是关于事务性质的声明:一个工作单元要么成功,要么完整地完成。如果您的事务包含两个插入和一个更新,并且更新语句失败,则数据库将回滚所有三个语句。任何递归 SQL 或其他 SQL(例如包含在触发器中的 SQL)都包含在事务的原子范围内。 Find out more.

        原子性是指the ACID principles of transaction management 中的A。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-03-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-23
          • 1970-01-01
          • 2019-12-12
          相关资源
          最近更新 更多