事务控制语句

使用事务控制语句


事务用于确保数据库的一致性,它有一组相关的DML语句组成。该DML语句所执行的操作要么
全部成功,要么全部取消。


1.事务和锁


当执行事务操作时,ORACLE会被作用表上加锁,以防止其他的用户改变表的结构;
同时会在被作用行上加行锁,以防止其他的事务在相应的行上执行DML操作。


如:假设会话A更新emp表行的数据,那么会在表emp上加锁;此时其他的回话修改表结构,
则会显示错误信息。


提交事务


使用commit语句可以提交事务。当执行了commit语句之后,会确认事务变化,结束事务,删除保存点,释放锁,
当使用commit语句结束事务之后,其他的回话可以查询到事务变化后的新数据。


回退事务


保存点(savepoint)的概念和作用。保存点是事务中的一点,它用于取消部分事务。
当结束事务时,会自动删除该事务所定义的所有保存点。


设置保存点


设置保存点是使用SQL命令SAVEPOINT来完成的。也可以使用DBMS_TRANSACTION的过程
SAVEPOINT来保存设置点。如下所示


savepoint a;或 exec dbms_transaction.savepoint('a')


2.取消部分事务


为了取消部分事务,用户可以回退到保存点,使用ROLLBACK命令也可以使用
DBMS_TRANSACTION的过程ROLLBACK_SAVEPOINT;如下所示


rollback a;或者exec dbms——transaction.rollback.savepoint('a');


取消全部事务


使用rollback命令可以取消全部的事务


exec dbms_transaction.rollback;
当使用rollback取消全部事务时,会取消所有的事务变化,结束事务,删除所有保存点,释放锁。


只读事务:指只允许执行查询操作,而不允许任何的DML操作事务。


set transaction read only;


注意设置只读事务时,该语句必须是事务开始的第一条语句。

猜你喜欢

转载自blog.csdn.net/silence_xj/article/details/79886914