oracle中的commit和rollback

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中的commit和rollback相关的知识,希望对你有一定的参考价值。

具体是什么意思啊?

1、首先commit和rollback是在进行insert、update、delete语句完成后需要做的操作(即对表中

   的记录进行修改),而select则不需要。

   为了防止你的操作有误,执行完以上三种语句后,数据库没有直接把结果保存,如果确认无误

   则可以commit(提交),如果有误(或反悔)可以rollback(回滚)

2、在pl/sql developement 工具中如果你有insert、update、delete操作,会在工具栏上有提交、回滚的图标,亮色显示,如图

参考技术A commit 就是确定提交的意思,比如你用test账户登录数据库insert到表中一条记录,而不commit,那么别的账户在登录这个数据库时就查询不到你insert 的记录;而commit后则其他账户就能查询到你insert的记录了。
rollback就是回滚的意思,比如你用test账户登录数据库delete表中一条记录,这时你查询这个表时,则delete的记录不存在;再rollback后,你再查询你delete的记录时,发现被删除的记录又回来了。本回答被提问者采纳
参考技术B

commit 就是确定提交的意思。
rollback就是回滚的意思。

甲骨文股份有限公司(Oracle)是全球大型数据库软件公司,总部位于美国加州红木城的红木岸。在2008年,甲骨文股份有限公司是继Microsoft及IBM后,全球收入第三多的软件公司。Oracle数据库产品为财富排行榜上的前1000家公司所采用,许多大型网站也选用了Oracle系统。甲骨文股份有限公司于1989年正式进入中国,在北京、上海、广州和成都均设立了分支机构。

2016年1月,甲骨文表示会收购网站数据追踪服务商AddThis。2016年2月,甲骨文收购了云计算创业公司Ravello Systems。2017年6月7日发布的2017年美国《财富》500强,甲骨文公司排名第81位。2017年6月,《2017年BrandZ最具价值全球品牌100强》公布,甲骨文公司排名第46位。


参考技术C COMMIT 是提交你的DML操作.
ROLLBACK 是取消你的DML操作.

DML操作主要指一些插数据\更新数据的操作,你的操作在没有COMMIT和ROLLBACK前,都还在本机的SESSION中,可以理解中还没有更新至数据库.

请采纳.
参考技术D commit对你刚做的DML操作进行提交
ROLLBACK对你刚做的DML操作进行回滚(也就是刚才做错了撤销回去)用到UNDO段追问

怎么才是提交啊,回车就提交了吗

追答

当你执行完DML语句之后
SQL>commit;

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后

 

以上是关于oracle中的commit和rollback的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 数据库中的 READ_COMMITTED 和 SERIALIZABLE 隔离级别有啥区别?

转: Oracle Form 中commit 与do_key('commit_form')区别

oracle 锁表、解锁的语句

Oracle何时commit???

oracle中,已commit的数据能rollback回滚吗?

请问oracle commit以后还能再回滚吗,rollback必须写在commit之前吗