MySQL数据库应用项目式教程课件:创建并使用事务_第1页
MySQL数据库应用项目式教程课件:创建并使用事务_第2页
MySQL数据库应用项目式教程课件:创建并使用事务_第3页
MySQL数据库应用项目式教程课件:创建并使用事务_第4页
MySQL数据库应用项目式教程课件:创建并使用事务_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

创建并使用事务

7.5

创建并使用事务在MySQL数据库中,当多个用户访问同一份数据时,一个用户在更改数据的过程中可能有其他用户同时发起更改请求,为了保证数据的更新从一个一致性状态变更为另一个一致性状态,这时必须引入事务的概念。在MySQL编程中事务编程已经成为不可缺少的一部分。它能保证数据库从一种一致性状态转换为另一种一致性状态。7.5

创建并使用事务事务就是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,你给朋友转1000元钱,按照正常的操作流程是你的账户减去1000元钱,朋友的账户增加1000元钱,本身这两个操作是完全独立的两次数据库更新操作,现在如果你的账户扣减1000元钱成功,但是你朋友的账户增加1000元失败,就会出现数据对不上的问题,此时就需要用到数据库中的事务,事务把这两个操作放到一个事务内执行,要么全部成功,要么全部失败,从而避免数据对不上的问题,这个问题解决了,这就是事务。1.事务的概念7.5

创建并使用事务(1)原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,要么成功,要么失败,是不存在中间状态的。(2)一致性(Consistency)一致性是指事务执行前后,数据从一个合法性状态变换到另一个合法性状态,这种状态是语义上的,而不是语法上的。(3)隔离性(Isolation)隔离性是指事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。2.事务的ACID特性7.5

创建并使用事务(4)持久性(Durability)持久性是指事务一旦提交,它对数据库中数据的改变就是永久性,接下来的其他操作和数据库故障不应该对其有任何影响。持久性是通过数据库重做日志来保证的,当我们通过事务对数据进行修改的时候,首先会将数据库的变换信息记录到重做日志中,然后再对数据库中对应的行进行修改。这样做的好处是,即使数据库系统崩溃,数据库重启后也能找到没有更新到数据库系统中的重做日志,重新执行,从而使事务具有持久性。2.事务的ACID特性7.5

创建并使用事务(1)关闭自动提交在MySQL的默认设置下,事务都是自动提交的,即执行任意一条更新语句后会马上执行COMMIT操作,提交到数据库中。3.事务控制语句SETAUTOCOMMIT={0|1};语法说明:当赋值为0时,关闭自动提交,当赋值为1时打开自动提交。(2)开始事务STARTTRANSACTION;语法说明:STARTTRANSACTION命令在开启事务的同时,将关闭自动提交。7.5

创建并使用事务(3)提交事务COMMIT[WORK];(4)设置保存点SAVEPOINT<保存点名称>;语法说明:用于在事务内设置保存点。(5)回滚事务ROLLBACK;|ROLLBACKTOSAVEPOINT<保存点名称>;语法说明:当条件回滚只影响事务的一部分时,事务不需要全部撤销已执行的操作,可以让事务回滚到指定位置,此时,需要在事务中设定保存点(SAVEPOINT)。保存点所在位置之前的事务语句不用回滚,即保存点之前的操作被视为有效的。7.5

创建并使用事务1.删除“student”表中所有数据,利用ROLLBACK来撤销此删除语句操作。【任务实施】(1)打开Navicat查询编辑器窗口。(2)在查询编辑器窗口输入以下SQL语句:STARTTRANSACTION;DELETEFROMstudent;ROLLBACK;执行以上语句后,打开student表,可以看到student表中数据并没有被删除,如下图所示。7.5

创建并使用事务7.5

创建并使用事务2.创建一个存储过程,该存储函数向student表中插入两条学生信息,并进行测试(1)打开Navicat查询编辑器窗口。(2)在查询编辑器窗口输入以下SQL语句并执行。CREATEPROCEDUREp_transaction_test()MODIFIESSQLDATABEGIN DECLARECONTINUEHANDLERFOR1265 BEGIN ROLLBACK; END;

7.5

创建并使用事务 STARTTRANSACTION; INSERTINTOstudentVALUES('23000106','王云','男','2004-03-31','信息工程系','22大数据1',17); INSERTINTOstudentVALUES('23000107','李浩','男','2004-04-13','信息工程系','22大数据1','17岁'); COMMIT;END;(3)执行调用存储过程语句,然后查看student表中信息,如下图所示。CALLp_transaction_test();7.5

创建并使用事务从图中可以看出,调用存储过程,2条数据并没有插入到数据库中,因为第2条插入语句中最后一个字段输入格式有误,由于事务,所以这两条语句都不执行。7.5

创建并使用事务修改存储过程p_transaction_test,将第2条插入语句修改正确后,调用该存储过程,然后查看student表中信息,如下图所示。INSERTINTOstudentVALUES('23000106','王云','男','2004-03-31','信息工程系','22大数据1',17);INSERTINTOs

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论