初学oracle发现事务有个特点,就是退出的时候会自动commit。那如果在程序里面写了两个语句,把第一条记录里面的数值减100加到第二条记录上,分两条sql语句操作,完成操作以后执行commit。
但是在执行完第一条语句的时候程序由于异常终止了,那就是退出了,没有执行到第二条语句。那么第一条里的操作也会被执行吗?最后的结果就是第一条记录里面的数值减了100但是第二条记录并没有加100吗?

解决方案 »

  1.   

    但是在执行完第一条语句的时候程序由于异常终止了,那就是退出了,没有执行到第二条语句。那么第一条里的操作也会被执行吗?最后的结果就是第一条记录里面的数值减了100但是第二条记录并没有加100吗?要么全部成功 要么就失败 一条语句 不会执行  
    数据还是原来的数据 没有变更 数据会rollback 
      

  2.   

    一般情况下,只有在应用程序正常关闭(如 sqlplus 使用 exit 命令退出)时,应用程序会自动提交未结束的事务(在开发程序时应该注意这一点)。而在应用程序异常中止时,oracle 会自动回滚未提交的事务。
      

  3.   

    客户端或程序异常终止,oracle会回滚未提交的事务。