您的位置:首页 > 数据库 > Oracle

oracle中事务处理

2017-09-20 13:53 246 查看
oracle中事务处理(一)

事务:事务用于保证数据的一致性,它由一组相关的dml的语句组成,该组的dml

语句,要么全部成功,要么全部失败.(dml语句简单的说就是增加,修改,删除

;dml语句没有查询语句)

事务和锁:

当执行事务操作时(dml语句),oralce会在被作用的表上加锁,防止其它用户改

表的结果,这里对我们用户来讲是非常重要的!

提交事务:
1)使用commit语句可以提交事务

2)当执行commit语句后,会确认事务的变化,并且结束事务,删除保存点,释放锁,

其它会话将可以查看到事务变化后的新数据

下面简单介绍在java上使用oracle事务管理

例子:从scott的sal-100 同时smith的sal+100

package javastudy;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

public class Test2 {

public static void main(String[] args) {
///事务案例
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
   conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "lh621366");

            conn.setAutoCommit(false);///设置默认不自动提交
   Statement st = conn.createStatement();
///SCOTT的薪水 sal-100
   st.executeUpdate("update emp set sal=sal-100 where ename='SCOTT'");
   ///SMITH的sal+100
   int i = 7/0;///这里是为了抛出异常,为了证明事务提交的一致性(要么全部成功,要么全部失败)

                    (抛出异常后,回滚点会回到conn=null这里,所以下面执行的代码也不会生效)

4000
   st.executeUpdate("update emp set sal=sal+100 where ename='SMITH'");
   ///提交事务
   conn.commit();///将st更新的这两个sql语句和int i=7/0这个语句当做一个整体事务来处理
   st.close();
   conn.close();
} catch (Exception e) {
   

   try {
    ///如果发生异常,就回滚
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}

   
}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: