软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 数据库 -> mysql -> 正文阅读

[数据库]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();
		}
		
	}

























......显示全文...
    点击查看全文


上一篇文章      下一篇文章      查看所有文章
2016-03-28 21:48:11  
数据库 最新文章
Python&MySQL&PyQt
最新用python来操作mysql完全解析
mongodb的安装详解
1.PDO简介
《MySQL必知必会学习笔记》:高级联结
【翻译自mos文章】怎么对Microsoft(Office)
MyCAT全局表描述及示例
ocp
关于SQL数据表存储过程表名前缀换成dbo代码
数据库调优教程(二)慢查询数据准备
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年7日历
2018-7-19 13:39:31
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --