mysql 事务处理,事务操作,JDBC中事务的使用,事务的sql语句,

1.事务

      事务是将许多动作整合成一个逻辑执行单元,这个执行单元要么全部执行,要么一个都不执行不执行。事务操作具有4的特性

      在mysql中只有innoDB存储引擎支持事务处理,所以mysql当中innoDB也是默认的存储引擎。在实际的应用当中经常会使用到事务像转账操作,一个账户的金额减少和另一个账户的金额增加都必须保证都正确执行,否则必须回滚。

      在mysql有个属性叫做autocommit,表示是否自动提交事务,默认值是1,表示true,所以我们一般使用sql语句,执行完就立即更新数据库了。如果set auotcommit=0之后sql语句执行完之后必须执行commit才能使数据持久化。


2.事务的使用

开始一个事务start transaction,begin;

回滚事务rollback;

提交一个事务commit

创建一个保存点,可以指定回滚到该点savepoint identifier;

删除一个事务的保存点release savepoint identifier

把事务回滚到标记点 rollback to identifier


使用的例子:

begin;
update score set score=40 where scoreid=1;
savepoint s1;
update score set score=50 where scoreid=1;
select * from score;
rollback to savepoint s1;
select * from score;
commit;

最后结果score=40。


3.JDBC中使用事务 try,catch块

try{  
			connection.setAutoCommit(false);  //不自动提交
			......执行jdbc代码  
			connection.commit(); 
		}catch(Exception e){  
			connection.roolback(); 
		}finally{ 
			 //清理资源
			connection.setAutoCommit(true);  //改回自动提交
		}

JDBC中connection提供有关事务处理:

   getAutoCommit()  获取此Connection 对象的当前自动提交模式。

   setAutoCommit(boolean autoCommit) 将此连接的自动提交模式设置为给定状态。

   getTransactionIsolation() 获取此Connection 对象的当前事务隔离级别。

   setTransactionIsolation(int level) 试图将此Connection 对象的事务隔离级别更改为给定的级别。

   setSavepoint() 在当前事务中创建一个未命名的保存点 (savepoint),并返回表示它的新 Savepoint 对象。

   setSavepoint(String name) 在当前事务中创建一个具有给定名称的保存点,并返回表示它的新 Savepoint 对象。

   releaseSavepoint(Savepoint savepoint) 从当前事务中移除指定的Savepoint 和后续Savepoint 对象。

   rollback() 取消在当前事务中进行的所有更改,并释放此Connection 对象当前持有的所有数据库锁。

   rollback(Savepoint savepoint) 取消所有设置给定Savepoint 对象之后进行的更改。


你可能感兴趣的:(数据库)