软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 数据库 -> mysql -> 正文阅读
数据库 最新文章
Python&MySQL&PyQt
最新用python来操作mysql完全解析
mongodb的安装详解
1.PDO简介
《MySQL必知必会学习笔记》:高级联结
【翻译自mos文章】怎么对Microsoft(Office)
MyCAT全局表描述及示例
ocp
关于SQL数据表存储过程表名前缀换成dbo代码
数据库调优教程(二)慢查询数据准备

[数据库]mysql

  2016-03-28 21:48:20

事务


一、概念


数据库事务(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  
360图书馆 论文大全 母婴/育儿 软件开发资料 网页快照 文字转语音 购物精选 软件 美食菜谱 新闻中心 电影下载 小游戏 Chinese Culture
生肖星座解梦 人民的名义 人民的名义在线看 三沣玩客 拍拍 视频 开发 Android开发 站长 古典小说 网文精选 搜图网 天下美图
中国文化英文 多播视频 装修知识库
2017-4-23 21:57:04
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --