分类: Oracle
2011-01-19 14:10:22
一个成功执行的 SQL 语句与一个提交的事务(transaction)是有区别的。一个 SQL 语句成功执行表明此语句:
|
但是在包含此语句的事务(transaction)被提交(commit)之前,整个事务都可以被回滚(roll back),事务内所有语句对数据库的修改都可以被撤销。尽管发生了回滚,事务内的 SQL 语句却是成功执行的。 |
提交(commit)意味着用户显式地或隐式地要求将事务(transaction)中对数据的修改永久地记录到数据库中。当用户执行 COMMIT 语句时即为显式的提交操作,当数据库应用程序正常结束或一个数据定义语句(data definition language,DDL)成功执行后将发生隐式 的提交操作。事务被提交后,事务内 SQL 语句的对数据的修改将被永久地记录到数据库中,其他用户将能够看到这些改变。在事务提交后执行的查询就能看变化后的数据了。 |
用户可以在开始一个事务(transaction)时使用 SET TRANSACTION ... NAME 语句为此事务命名。这有助于用户监控长时间运行的事务,以及处理不可信的分布式事务(in-doubt distributed transaction)。 |