事务是又一系列语句构成的逻辑工作单元,通常是为了完成一定业务逻辑而将一条或者多条语句 “封装” 起来,使它们与其他语句之间出现一个逻辑上的便捷,并形成相对独立的一个工作单元。
一、事务概述
当使用事务修改多个数据表时,如果在处理的过程中出现了某种错误,例如系统死机或者出现其他等情况,则返回结果是全部数据均没有被保存。
对事务处理的结果只有两种:
一种是在事务处理的过程中,如果发生了某种错误则整个事务全部回滚,使所有对数据的修改全部撤销,事务对数据库的操作是单步执行的,当遇到错误时可以随时地回滚;
另一种是如果没有发生任何错误且每一步的执行都成功,则整个事务全部被提交。
从而可以看出,有效地使用事务不但可以提高数据的安全性,而且还可以增强数据的处理效率。
事务包含 4 种重要的属性,被统称为 acid (原子性、一致性、隔离性和持久性),一个事务必须通过 acid。
(1)原子性(atomic): 事务是一个整体的工作单元,事务对数据库所做的操作要么全部执行,要么全部取消。假如某条语句执行失败,则所有语句全部回滚。
(2)一致性(condemoltent): 事务在完成时,必须使所有的数据都保持一致状态。在相关的数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。如果事务成功,则所有数 据将变成一个新的状态;如果事务失败,则所有数据将处于开始之前的状态
(3)隔离性(isolated): 由事务所作的修改必须与其他事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务 不会查看中间状态的数据。
(4)持久性(durability): 当事务提交后,对数据库所做的修改就会永久保存下来。
二、操作事务
oracle 11g 中的事务是隐式自动开始的,它不需要用户显示地执行开始事务语句。但对于事务的结束处理,则需要用户进行指定的操作,通常在以下情况时, oracle 认为一个事务结束了。
(1) 执行 commit 语句提交事务。
(2) 执行 rollback 语句撤销事务。
(3) 执行一条数据定义语句,如果 create、drop 和 alter 等语句。如果该语句执行成功,那么 oracle 系统会自动执行 commit 命令;否则, oracle 系统会自动执行 rollback 命令。
(4) 执行一个数据控制语句,比如 grant、revoke 等控制命令,这种操作执行完毕, oracle 系统会自动执行 commit 命令。
(5) 正常地断开数据库的连接、正常地退出 sql*plus 环境,则 oracle 系统会自动执行 commit 命令;否则, oracle 系统会自动执行 rollback 命令。
总结: oracle 结束一个是事务归根结底是那么执行 commit 命令,要么执行 rollback 命令。
1、提交事务(commit语句)
2、回滚事务(rollback语句)