【发布时间】:2010-11-30 21:16:39
【问题描述】:
这感觉像是一个愚蠢的问题,但我在 Oracle 事务管理概念指南中看到以下内容:
当任何一个交易结束时 发生以下情况:
用户发出 COMMIT 或 ROLLBACK 没有 SAVEPOINT 子句的语句。
用户运行 DDL 语句,例如 创建、删除、重命名或更改。如果 当前事务包含任何 DML 语句,Oracle 首先提交 事务,然后运行并提交 DDL 语句作为一个新的、单一的 对帐单交易。
用户与 Oracle 断开连接。这 当前事务已提交。
用户进程异常终止。 当前事务被滚动 返回。
我是否将最后一点解释为如果我发出一个有错误的查询,事务将被回滚?
【问题讨论】:
-
实际上,这对我来说是一个非常有趣的问题。 Postgres 出错时回滚,我经常觉得它很烦人(想知道 Oracle 是否做了类似的事情)。
-
告诉我,如果您不想回滚错误,为什么还要使用事务?这是交易的主要目的之一。
-
@Oliver:我不一定想要或不想要它们。我只是想知道它们是如何工作的。
-
@Oliver,这是 Oracle - 你总是使用事务。
-
@JeffreyKemp:严格来说,您总是在任何关系数据库中使用事务,只是有很多接口自动提交每个语句。
标签: sql oracle transactions plsql oracle10g