在emp表中先从把scott用户的sal减去50,然后再给king员工的sal加上50元,中间使用事

解决方案 »

  1.   

    begin
    update emp set sal=sal-50 where name='scott';
    update emp set sal=sal+50 where name='king';
    commit;
    exception
     when others then
       rollback;
    我也是初学者
      

  2.   

    1个sql够了:update scott.emp set sal=decode(ENAME,'SCOTT',sal-50,'KING',sal+50,sal);
      

  3.   

     什么是事务?
    事务就是用于保证数据的一致性,它由一组相关的dml语句组成,改组的dml语句要么全部成功,要么全部失败;(dml语句就是数据操作语言,如查询,删除等等);
     事务和锁
    当执行事务操作时(dml语句),oracle会在被操作的表上加锁,防止其他用户改变表的结构;
     提交事务
    当执行使用commit语句会提交事务,当执行了commit事务,会确认事务的变化,结束事务,删除保存点,释放锁。当使用commit提交事务后,其他会话可以看到事务确认变化的新数据;
     保存点
    保存点是事务中的一个点,用于取消部分事务,当事务结束时,会自动删除该事务所定义的所有保存点。
     回滚事务
    当执行rollback时,通过制定保存点可以回退到制定的点;(注:当事务执行commit提交了以后,不能再回滚了)。
     事务的几个重要操作
    1) 设置保存点
    Savepoint  a1;
    2) 取消部分事务
    Rollback to a1;
    3) 取消全部事务
    Rollback;
    4) 提交事务
    Commit;
     Java中如何使用事务
    在java中操作数据时,为了保证数据库的一致性,比如转账操作;import java.sql.*;public class testOra2 { //演示jdbc链接操作oracle
     
     public static void main(String[] args) {
      
      Connection conn=null;
      try
      {
       //1.加载jdbc驱动
       
       Class.forName("oracle.jdbc.driver.OracleDriver");
       
       //2. 获取链接
       conn=DriverManager.getConnection("jdbc:oracle:thin:@192.168.10.15:1521:TEST","testUser","testUser");
       
       //下面操作和sql server一样
       Statement sm=conn.createStatement();
       
       //加载事务处理
       conn.setAutoCommit(false);
       
        sm.executeUpdate("update emp set sal=sal-100 where ename='KING'");
        
        //设置异常
       int i=7/0;
       
        sm.executeUpdate("update emp set sal=sal+100 where ename='SCOTT'");
       
        //提交事务处理
        conn.commit();
       //关闭资源
       conn.close();
       sm.close();
       
      }
      catch(Exception ex)
      {
       try
       {
        //事务回滚
        conn.rollback();
       }
       catch (Exception e)
       {
            e.printStackTrace();
       }
       
       ex.printStackTrace();
       
      }
      }}
     只读事务
    只读事务就是只允许执行查询操作,不允许执行其他任何dml操作的事务,使用只读事务可以确保用户只能取得某时间点的数据。
    设置只读事务
    Set transaction read only;
      

  4.   

    1个sql够了:update scott.emp set sal=decode(ENAME,'SCOTT',sal-50,'KING',sal+50,sal);
    厉害 这个我不是很懂 还在学习的路上