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();
}
}
}
事务:事务用于保证数据的一致性,它由一组相关的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();
}
}
}
相关文章推荐
- Oracle学习--->5、事务处理和锁定
- Oracle中的游标、事务处理、异常
- 初识jdbc对oracle数据库事务处理(隔离级别)
- oracle的事务处理
- Oracle 11g 学习五:子查询,数据更新操作,事务处理和数据伪列
- Oracle的OracleBulkCopy不支持事务处理
- Oracle12C--Oracle事务处理(十一)
- 关于Oracle处理DDL和DML语句的事务管理
- Oracle的事务处理机制
- asp.net的Oracle事务处理
- ODP优化之Oracle事务处理中遇到的问题
- Oracle中事务处理
- Oraclee 事务处理以及在c#中使用oracle的事务处理【转载】
- Oracle12C--Oracle事务处理(十一)
- Oracle 10g DBCA建库四个选项的区别------ 一般用途 事务处理 定制数据库数据仓库
- 关于Oracle处理DDL和DML语句的事务管理
- SQL Server与Oracle数据库事务处理横向对比
- Oracle笔记(七) 数据更新、事务处理、数据伪列
- ORACLE 事务处理
- 关于Oracle处理DDL和DML语句的事务管理