zoukankan      html  css  js  c++  java
  • Oracle 事件

    Oracle 的事物

    事物是设么

    事物是用于高正数据的一致性,他由一组相关的dml语句组成(增加删除语句),这组语句要么全部成功要不全部失败。

    如:网上转账。

    1)设置保存点

    Savepoint a1 ;

    2)取消部分事物

    Rollback to a1 ;

    3)取消全部事物

    Rollback;

    现在执行程序

    Statement sm = conn.createStatement();

    sm.executeUpdate("update emp set sal = sal - 100 where ename = 'SCOTT'");       

    sm.executeUpdate("update emp set sal = sal + 100 where ename = 'SMITH'") ;

     

    这两句程序可以看出是一个事物,如果执行了前一个程序,扣钱,而没有执行第二个价钱的程序,则异常。

     

    加一个事物处理

    首先

       Ct.setAutoCommit(false) ;  取消自动保存

    然后在错误处理中,使用rollback。

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class s {
          private static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
            private static final String DBURL = "jdbc:oracle:thin:@localhost:1521:mldn";
            private static final String USER = "scott" ;
            private static final String PASSWORLD = "tiger" ;
        public static void main(String[] args) throws ClassNotFoundException, SQLException {
            int a ;
            Connection conn = null;    
            try{
                Class.forName(DBDRIVER) ;
            
            //第二步 连接数据库
            conn = DriverManager.getConnection(DBURL,USER,PASSWORLD) ;
            
            conn.setAutoCommit(false) ;
            
            System.out.println(conn) ;
            Statement sm = conn.createStatement();
            sm.executeUpdate("update emp set sal = sal - 100 where ename = 'SCOTT'");  
            a = 7 / 0 ;
            sm.executeUpdate("update emp set sal = sal + 100 where ename = 'SMITH'") ;
                    
            conn.commit();
            conn.close();
            } catch (Exception e) {
                try{
                    conn.rollback() ;
                    
                } catch (Exception e1){
                    e1.printStackTrace() ;
                }
                e.printStackTrace() ;
            }
    
        }
    
    }

    只读事务

    Set transaction read only ;

  • 相关阅读:
    tomcat集群安装
    jdk
    docker容器间互联
    part1-vulkan开发环境搭建
    宝塔面板mysql表误操作导致原数据表被删恢复过程(附php代码正则插入id)
    php Redis定时执行或延迟(异步)
    Tp5 微信公众号 获取用户信息 EasyWeChat使用
    Fastadmin Area模型返回没值 没对象georadius 源码里面没有$redis->geoadd 解决办法
    [CF Contest] 1059 A~C
    [多校练习] 成都七中数据结构 Challenge 系列解题报告
  • 原文地址:https://www.cnblogs.com/da-peng/p/5298910.html
Copyright © 2011-2022 走看看