oracle中的事务
事务
概述:通过sql 对数据库进行操作时,同时执行成功或失败,且数据完整性一致。
链接到oracle的用户(例如plsql或sqlplus)会形成一个session, 此时对数据库的更新操作,不会立即修改数据,不提交的情况下,可以进行回滚操作。
rollback 回滚事务(数据被提交将无法回滚)
commit 提交事务
例如:rollback
----查询结果是王五
> select * from table where name='王五';
-----王五更新成李四
> update table set name='李四' where name='王五';
----再次查询王五,查不到数据;-查询李四可以查询到数据
> select * from table where name in ('王五', '李四');
---此时进rollback操作,回滚数据
> rollback;
---查询王五可以查到结果,查询李四查不到数据
> select * from table where name in ('王五', '李四');
例如:commit
----查询结果是王五
> select * from table where name='王五';
-----王五更新成李四
> update table set name='李四' where name='王五';
----再次查询王五,查不到数据;-查询李四可以查询到数据
> select * from table where name in ('王五', '李四');
---此时进commit操作,回滚数据
> commit;
---查询王五可以查不到结果,查询李四查到数据
> select * from table where name in ('王五', '李四');
---进行回滚
> rollback;
---在查询数据,发现查询结果还是李四,说明已经提交数据修改,无法回滚
> select * from table where name in ('王五', '李四');
死锁
多用户同时修改一条数据,且最先修改数据的那个用户的session未提交数据,则其他用户的session无法修改这条数据,一直处于等待对方commit后