Chinaunix首页 | 论坛 | 博客
  • 博客访问: 733004
  • 博文数量: 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:12:41

如果在一个 SQL 语句在执行过程中发生了错误,那么此语句对数据库产生的影响将被回滚(roll back)。回滚后就如同此语句从未执行过。这种操作被称为语句级回滚(statement-level rollback)。
在语句执行(execution)过程中发生的错误将会导致语句级回滚(statement-level rollback),例如向一个表中插入数据造成主键(primary key)值重复即为此类错误。一个造成死锁(deadlock)(访问相同数据而产生的竞争)的 SQL 语句也会导致语句级回滚。而在 SQL 语句解析(parsing)的过程中发现错误(例如语法错误),因为此语句还没有被执行,所以不会产生语句级回滚。
一个 SQL 语句执行失败只会使此语句所做的数据修改无效,而不会导致当前事务(transaction)中此语句之前的语句所做的数据修改失效。如果执行失败的是 DDL 语句,那么在此语句之前隐式执行的提交(commit)操作不会被撤销。
提示:

用户不能在回滚语句(rollback statement)中直接引用(refer)隐式的保存点(implicit savepoint)。
阅读(1714) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~