oracle事务_笔记1:事务控制语句
事务控制语句
Oracle中不需要用专门的语句来“开始事务”。事务会在修改数据的第一条语句处隐式开始(也就是得到TX锁的第一条语句)。也可以使用SET TRANSACTION或DBMS_TRANSACTION包来显式地开始一个事务。但是这一步并不是必要的,这与其他的许多数据库不同,因为那些数据库中都必须显式地开始事务。如果发出COMMIT或ROLLBACK语句,就会显式地结束一个事务。
一定要显式地使用COMMIT或ROLLBACK来终止事务;否则,你使用的工具/环境就会从中挑一个来结束事务。如果正常地退出SQL*Plus会话,而没有提交或回滚事务,SQL*Plus就会认为你希望提交前面做的工作,并为你完成提交。另一方面,如果你只是退出一个Pro*C程序,就会发生一个隐式的回滚。不要过分依赖这些隐式行为,因为将来这些行为可能会有改变。一定要显式地提交或回滚事务。
事务控制语句:
.COMMIT:要想使用这个语句的最简形式,只需发出COMMIT。COMMIT会结束你的事务,并使得已做的所有修改成为永久性的(持久保存)。COMMIT语句还有一些扩展用于分布式事务中,允许增加一些有意义的注释为COMMIT加标签(对事务加标签),以及强制提交一个可疑的分布式事务。还有一些扩展,可以让你执行一个异步提交,这实际上违反了持久性原则。
.ROLLBACK:要想使用这个语句的最简形式,只需发出ROLLBACK。回滚会结束事务,并撤销所有未提交的修改。为此要读取存储在回滚段/undo段中的信息,并把数据库块恢复到事务开始之前的状态。
.SAVEPOINT:SAVEPOINT允许你在事务中创建一个标记点(marked point)。一个事务中可以有多个SAVEPOINT。
.ROLLBACK TO
.SET TRANSACTION:这条语句允许你设置不同的事务属性,如事务的隔离级别以及事务是只读的还是可读写的。使用手动undo管理时,还可以使用这个语句来指示事务使用某个特定的undo段。
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5231.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
