标签:rollback ace detail 结果 com html 可重复 target log
数据库事务
通过将一组相关操作组合成一个要么全部执行成功,要么全部执行失败的单元,极大地简化了错误恢复并使应用程序更加可靠。事务既可以在存储过程中写,也可以在应用程序中写。
事物的三个操作:
开始,提交,回滚。
保存点:设置保存点后,事物回滚可以回滚到设置的保存点,而不必全部回滚。
java事务的类型有三种;JDBC事务,JTA事务(分布式多数据源),容器事务。
在jdbc api中,默认的情况为自动提交事务,也就是说,每一条对数据库的更新的sql语句代表一项事务,操作成功后,系统自动调用commit()来提交,否则将调用rollback()来撤消事务。
在jdbc api中,可以通过调用setAutoCommit(false) 来禁止自动提交事务。然后就可以把多条更新数据库的sql语句做为一个事务,在所有操作完成之后,调用commit()来进行整体提交。倘若其中一项 sql操作失败,就不会执行commit()方法,而是产生相应的sqlexception,此时就可以捕获异常代码块中调用rollback()方法撤消事务。
存储过程
存储过程是大型数据库系统中一组为了完成特定功能的SQL语句集,存储在数据库中。经过第一次编译后再次调用不用再编译。用户通过指定存储过程的名字并给出参数(如果该存储过程有名字)来执行它。
数据库事务隔离级别
http://blog.csdn.net/fg2006/article/details/6937413
数据库事务的隔离级别有四个,由低到高依次为读未提交,读提交,重复读,序列化。这四个级别可以逐个解决脏读,不可重复读,幻读的问题。事务隔离的场景主要发生在事务并发的情况下。
脏读:
脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。【事务提交前事务中的每个修改操作语句执行后数据库的值会变,不是提交后才变。事务的作用只是起一个将库中修改后的数据恢复原样的作用】
不可重复读:
set 作用域 transaction isolation level 事务隔离级别,例如~
mysql> set global transaction isolation level read committed; //全局的
mysql> set session transaction isolation level read committed; //当前会话
http://www.cnblogs.com/aliger/p/3898869.html
事务传播行为:
标签:rollback ace detail 结果 com html 可重复 target log
原文地址:http://www.cnblogs.com/jianmianruxin/p/7474147.html