- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第10章事务管理和多用户操作——事务
01事务的概念
事务的概念在MySQL环境中,事务由一个单独单元的一个或多个SQL语句组成。这个单元中的SQL语句是互相依赖的,而单元作为一个整体是不可分割的。如果单元中的一个语句不能完成,整个单元就会回滚(撤销),所有影响到的数据将返回到事务开始以前的状态。因而,只有事务中的所有语句都成功地执行才能说明这个事务被成功地执行。例如:在学生成绩数据库(xscj)中,下列情况都是一个完整的事务。(1)删除一个学生及格以上的成绩和减少对应的总学分。(2)修改一个成绩(从不及格到及格以上)需要增加学生的总学分。(3)修改一个成绩(从及格以上到不及格)需要减少学生的总学分。(4)删除学生记录的同时需要删除该学生的所有成绩记录。(5)删除课程记录的同时需要删除该课程的所有成绩记录。
02ACID属性原子性一致性隔离性持久性
ACID属性1.原子性原子性指事务是数据库工作的最小单位,一个事务中的所有操作要么全部成功提交,要么全部失败回滚。例如:插入一个学生及格以上成绩和增加对应学生的总学分这两个操作要么同时成功要么同时失败,故应在同一个事务中。2.一致性一致性指事务操作不能破坏数据的一致性,数据库在一个事务的执行前后都应处于一致状态。例如:假设在插入学生成绩后数据库发生故障(例如宕机)则事务被迫中断,但修改学生总学分未完成,已经写入数据库的成绩记录就会破坏与学生总学分数据的一致性。
ACID属性3.隔离性隔离性指数据库并发情况下,并发的事务之间是隔离的,一个事务的执行不能被其他事务影响。隔离性比较复杂,在本节后面专门介绍。4.持久性持久性指一旦事务提交,则其对数据的变更就是永久性的,即使数据库发生任何故障都不应该对数据造成影响。例如:插入一个学生及格以上成绩和增加对应学生的总学分这两个操作事务已经完成,但数据库故障,仍然要保证两个操作结果正确并保存到数据库中。
03事务处理开始事务结束事务撤销事务和回滚事务
事务处理1.开始事务STARTTRANSACTION|BEGINWORK2.结束事务使得自从事务开始以来所执行的所有修改成为数据库的永久部分,也标记一个事务的结束。COMMIT[AND[NO]CHAIN][[NO]RELEASE]说明:(1)可选的ANDCHAIN子句会在当前事务结束时立刻启动一个新事务,并且新事务与刚结束的事务有相同的隔离级。(2)RELEASE子句在终止了当前事务后,会让服务器断开与当前客户端的连接。包含NO关键字可以抑制CHAIN或RELEASE完成。
事务处理3.撤销事务和回滚事务(1)撤销事务所做的修改,并结束当前这个事务。ROLLBACK[AND[NO]CHAIN][[NO]RELEASE]选项功能同结束事务(COMMIT)。(2)可以不撤销事务所有操作,而是回滚到一个事务的保存点。当然,此前在事务中需要设置保存点,设置语句如下:SAVEPOINT保存点名如果在保存点被设置后,当前事务对数据进行了更改,则这些更改会在回滚到保存点时被撤销。
事务处理(3)删除指定的保存点RELEASESAVEPOINT保存点名它从当前事务的一组保存点中删除指定的保存点。如果指定的保存点不存在,则会出现错误。下面几个语句说明了有关事务的处理过程:1.STARTTRANSACTION2.UPDATE…3.DELETE…4.SAVEPOINTS1;5.DELETE…6.ROLLBACKWORKTOSAVEPOINTS1;7.INSERT…8.COMMITWORK;
04事务应用实例含事务编程执行含事务程序事务功能测试
事务应用实例【例】创建包含事务的存储过程,插入学生课程成绩。1.含事务编程创建一个存储过程input_cj,插入一个学生成绩。USExscj;DROPPROCEDUREIFEXISTSinput_cj;DELIMITER$$CREATEPROCEDUREinput_cj(INxhchar(6),INkchchar(3),INcjint)BEGIN DECLARExfint(1); #(a) DECLAREtransErrintDEFAULT0; #(b.1) DECLARECONTINUEHANDLERFORSQLEXCEPTIONSETtransErr=1; #(b.2) STARTTRANSACTION; #(b.3) SELECT学分INTOxfFROMkcWHERE课程号=kch; #(c.1) INSERTINT
您可能关注的文档
- MySQL实用教程(第4版) 课件 第1章 数据库基础.pptx
- MySQL实用教程(第4版) 课件 第2章 数据类型.pptx
- MySQL实用教程(第4版) 课件 第3章 数据库和表.pptx
- MySQL实用教程(第4版) 课件 第4章 查询和视图.pptx
- MySQL实用教程(第4版) 课件 第5章 索引与数据完整性.pptx
- MySQL实用教程(第4版) 课件 第6章 SQL扩展语言和系统函数.pptx
- MySQL实用教程(第4版) 课件 第7章 过程式数据库对象.pptx
- MySQL实用教程(第4版) 课件 第8章 数据库备份与恢复.pptx
- MySQL实用教程(第4版) 课件 第9章 用户管理和权限控制.pptx
- 建筑物内信息技术设备接地技术比较 (2).doc
文档评论(0)