事务处理
所有的数据更新一定都会受到事务的控制
- 对于数据表的操作,查询要比更新操作更安全,因为更新操作有可能会出现错误,导致没有按照既定的要求正确的完成更新操作。
- 如果同为一个事务的操作出现错误,那么其他操作应该不再继续执行,并且都回归到最原始的状态,而这一个流程的操作实际上就是事务的操作。
- 所有的事务处理都是针对每一个会话进行的,在 oracle 中,把每一个连接到数据库的用户都称为一个会话,每一个会话之间彼此独立,互不通信,每一个会话独享自己的事务控制,
而事务控制之中主要使用两个命令:
- 事务的回滚:ROLLBACK,更新操作回到原点
- 事务的提交:COMMIT,真正的发出更新请求,一旦提交后无法回滚
这种事务控制会出现一些问题,例如,某一个会话在更新数据表的时候还没有提交事务,其他会话是无法进行更新的,必须等待之前的会话提交后才可以。
死锁,会话 1 执行更新后,在没有提交之前,会话 2 进行更新会出现等待
会话 1 update myemp set sal=9000 where empno=7839;
会话 2 update myemp set sal=8000 where empno=7839;
这种问题从大的方面来讲可以称作死锁,但是在 oracle 之中死锁有很多种类。上面的是行锁