Chinaunix首页 | 论坛 | 博客
  • 博客访问: 791467
  • 博文数量: 180
  • 博客积分: 4447
  • 博客等级: 上校
  • 技术积分: 1582
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-03 14:51
文章分类

全部博文(180)

文章存档

2014年(6)

2013年(8)

2011年(125)

2009年(35)

2008年(1)

2007年(5)

分类: Oracle

2011-01-19 14:10:22

一个成功执行的 SQL 语句与一个提交的事务(transaction)是有区别的。一个 SQL 语句成功执行表明此语句:
  • 解析正常
  • 是有效的 SQL 语法结构
  • 作为一个独立的语句运行无错误。例如,在一个多行更新操作(multirow update)中所有数据行都被成功修改。
但是在包含此语句的事务(transaction)被提交(commit)之前,整个事务都可以被回滚(roll back),事务内所有语句对数据库的修改都可以被撤销。尽管发生了回滚,事务内的 SQL 语句却是成功执行的。
提交(commit)意味着用户显式地或隐式地要求将事务(transaction)中对数据的修改永久地记录到数据库中。当用户执行 COMMIT 语句时即为显式的提交操作,当数据库应用程序正常结束或一个数据定义语句(data definition language,DDL)成功执行后将发生隐式 的提交操作。事务被提交后,事务内 SQL 语句的对数据的修改将被永久地记录到数据库中,其他用户将能够看到这些改变。在事务提交后执行的查询就能看变化后的数据了。
用户可以在开始一个事务(transaction)时使用 SET TRANSACTION ... NAME 语句为此事务命名。这有助于用户监控长时间运行的事务,以及处理不可信的分布式事务(in-doubt distributed transaction)。
阅读(929) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~