首页 / MYSQL / mysql ------ 事务
mysql ------ 事务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql ------ 事务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2101字,纯文字阅读大概需要4分钟。
内容图文
![mysql ------ 事务](/upload/InfoBanner/zyjiaocheng/1304/f17fcaffa3bd4d6bbd3028486cbae3d6.jpg)
事务
一、概念
数据库事务 (Database Transaction) ,是指作为单个逻辑工作单元执行的一系列 操作 ,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。( 事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。)
例如,银行转账工作:从一个账号扣款并使另一个账号增款,这两个操作要么都执行,要么都不执行。这就是一个事务。
二、
事务的语句
开始事物:BEGIN TRANSACTION提交事物:COMMIT TRANSACTION
回滚事务:ROLLBACK TRANSACTION 如果在操作时出错,应该从新开始一个事务。
三、属性
1、原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。
2、一致性(consistency):在事务处理执行前后,数据库是一致的(数据库数据完整性约束)。
3、隔离性(isolcation):一个事务处理对另一个事务处理的影响。
4、持续性(durability):事务处理的效果能够被永久保存下来 。
5、一个事务只会有一个结果:要么成功、要么失败。
四、一般的sql语句、批处理和事务处理三者的区别和java实现代码模板
(下面的的Connection con = ConnFactory.getConn()可见点击打开链接)
1、一般sql语句
没有采用事务处理,语句通过一条就生效一条,如果出异常,后面的语句都不能执行。
@Test public void save1() throws Exception{ Connection con = ConnFactory.getConn(); Statement st = con.createStatement(); st.execute("insert into stud(id,sname,age) values(1010,'益阳1',25)"); st.execute("insert into stud(id,sname,age) values(1010,'益阳2',28)"); st.execute("insert into stud(id,sname,age) values(1011,'益阳1',25)"); }2、批处理
没有采用事务处理,批处理的方式:所有合法的语句都能有效执行,出异常的语句自己本身是不能执行,但不影响后面的语句。
@Test public void save2() throws Exception{ Connection con = ConnFactory.getConn(); Statement st = con.createStatement(); st.addBatch("insert into stud(id,sname,age) values(1010,'益阳1',25)"); st.addBatch("insert into stud(id,sname,age) values(1010,'益阳2',28)"); st.addBatch("insert into stud(id,sname,age) values(1011,'益阳3',25)"); st.executeBatch(); }3、事务处理模板
@Test public void save3() throws Exception{ Connection con = ConnFactory.getConn(); try { con.setAutoCommit(false);//默认是true,即是不采用事务处理----false相当于SQL中的“start Transaction” Statement st = con.createStatement(); st.execute("insert into stud(id,sname,age) values(1010,'益阳1',25)"); st.execute("insert into stud(id,sname,age) values(1010,'益阳2',28)"); st.execute("insert into stud(id,sname,age) values(1012,'益阳3',25)"); con.commit(); } catch (Exception e) { System.out.println("回滚了...."); con.rollback(); }finally{ con.setAutoCommit(true);//还原现场,还设成默认的即非事务处理状态 con.close(); } }
原文:http://blog.csdn.net/u011479875/article/details/50996781
内容总结
以上是互联网集市为您收集整理的mysql ------ 事务全部内容,希望文章能够帮你解决mysql ------ 事务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。