事务隔离(并发控制)
事务隔离级别:一个事务对数据库的修改与并行的另一个事务的隔离程度。
2、不可重复读取:事务T1读取一行记录,紧接着事务T2修改了T1刚刚读取的记录,然后T1再次查询,发现与第一次读取的记录不同,这称为不可重复读。
3、脏读:事务T1更新了一行记录,还未提交所做的修改,这个T2读取了更新后的数据,然后T1执行回滚操作,取消刚才的修改,所以T2所读取的行就无效,也就是脏数据。
为了处理问题,SQL标准定义了以下几种事务隔离级别
![](https://img-blog.csdn.net/20170923200134695?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmVueGlhb2hhaTg4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
事务隔离级别:一个事务对数据库的修改与并行的另一个事务的隔离程度。
两个并发事务同时访问数据库表相同的行时,可能存在以下三个问题:
2、不可重复读取:事务T1读取一行记录,紧接着事务T2修改了T1刚刚读取的记录,然后T1再次查询,发现与第一次读取的记录不同,这称为不可重复读。
3、脏读:事务T1更新了一行记录,还未提交所做的修改,这个T2读取了更新后的数据,然后T1执行回滚操作,取消刚才的修改,所以T2所读取的行就无效,也就是脏数据。
为了处理问题,SQL标准定义了以下几种事务隔离级别
设置事务的隔离级别
try {
con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
consetAutoCommit(false);
//执行SQL语句
connection.commit();
} catch (SQLException e) {
connection.rollback();
e.printStackTrace();
}