分类: 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)操作不会被撤销。 |
提示: |