"显示提交"和"隐式提交"

    我发现有人经常 “ 滥用” ORACLE 中的  COMMIT 和  ROLLBACK 的用法。
    首先,大家要清楚  COMMIT /  ROLLBACK ,都是用在执行 DML 语句之后的。所谓 DML 语句就是 INSERT / DELETE / UPDATE / SELECT ,而 CREATE TABLE / VIEW 之类的语句,是 DDL。
    DML 语句,执行完之后,处理的数据,都会放在回滚段中(除了 SELECT 语句),等待用户进行提交( COMMIT)或者回滚 ( ROLLBACK),当用户执行  COMMIT /  ROLLBACK  后,放在回滚段中的数据就会被删除。
    所有的 DML 语句都是要 显式提交了,所谓“ 显式提交”,就是要执行  COMMIT /  ROLLBACK  。
    而其他的诸如 DDL 语句的,都是 隐式提交的。就是说,不用进行  COMMIT /  ROLLBACK  。在运行那些非 DML 语句后,ORACLE 已经进行了 隐式提交,例如 CREATE TABLE,在运行脚本后,表已经建好了,并不在需要你再进行 显式提交

---------------------
   说白了, 对Oracle来说 ,分为DML(增删改查)和DDL(建表删除表)两种。但凡Oracle碰到DDL语句,实际上是做的如下动作:
   {insert into dba_XXX  
   commit}  
    若不插入字典,后面的动作会出现字典不匹配的情况,所以一Commit必然会将DDL语句之前的动作统一提交,假如这个情况出现在存储过程                 中,则DDL前面的增删改全部被提交了,会出现问题。所以DDL语句最好放在其它地方,以我的程序为例,建表删表是放在日结中。

    对SqlServer来说 ,建表删表这些动作,没有隐式提交的提交,是由事务启动开始一直到结束统一完成的,增删改和建表删表在一起提交,所以无需   
   担心。


    所以那些对显式提交有疑问的人,希望这篇文章对大家有用。


 
 
 
     PS:SELECT 语句执行后,数据都存在 共享池。提供给其他人查询相同的数据时,直接在共享池中提取,不用再去数据库中提取,提高了数据查询的速度。
     不过大家要注意:所谓提供给其他人查询相同的数据,有很多的条件限制,不在本篇中详说,请在“共享池的使用注意”一文中在详细说明。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值