使用事务控制语句
事务用于确保数据库的一致性,它有一组相关的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;
注意设置只读事务时,该语句必须是事务开始的第一条语句。
事务用于确保数据库的一致性,它有一组相关的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;
注意设置只读事务时,该语句必须是事务开始的第一条语句。