• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql – 事宜_mysql

mysql 搞代码 7年前 (2018-06-07) 163次浏览 已收录 0个评论

mysql —— 事务

事务


一、概念

数据库事务(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();   }     }












欢迎大家阅读mysql – 事宜_mysql》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql – 事宜_mysql

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址