文档详情

数据库技术项目式教程(MySQL)课件 任务9.1使用事务.pptx

发布:2025-04-29约1.38千字共10页下载文档
文本预览下载声明

使用事务

任务提出当对数据库进行许多相关联的更新操作时,必须确保所有更新都被正确执行,假如发生任何更新操作失败,则必须恢复到对数据库操作前的原始状态。

银行转账:假定资金从张三账户转到李四账户,至少需要两步:张三账户的资金减少;然后李四账户的资金相应增加。任务提出银行转账张三账户李四账户

任务分析如何解决呢?需要将转账的两个UPDATE语句当作一个整体。保证它们要么全部正确执行,要么全部都不执行。

1.事务概述事务(Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。事务,一个最小的不可再分的工作单元,通常一个事务对应一个完整的业务,例如银行账户转账业务,该业务就是一个最小的工作单元。【注意】MyISAM存储引擎的表不支持事务,InnoDB存储引擎的表支持事务。相关知识与技能

2.事务四大特征(ACID)原子性(Atomicity)一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。一致性(Consistency)事务使数据库从一个一致性状态变到另一个一致性状态。隔离性(Isolation)一个事务的执行不被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不互相干扰。持久性(Durability)一个事务一旦提交,它对数据库中数据的改变就是永久性的。相关知识与技能

3.管理事务的语句STARTTRANSACTION:开启事务。COMMIT:提交事务。事务正常结束,提交事务的所有操作,事务中所有对数据库的更新永久生效。ROLLBACK:回滚事务。事务异常终止,事务运行的过程中发生了故障,不能继续执行,回滚事务的所有更新操作,回滚到事务开始时的状态。【注意】在MySQL中,只能在存储过程中进行事务处理。不允许在函数或触发器中使用事务。相关知识与技能

【例2】使用事务来解决上述转账问题。CREATEPROCEDUREchangemoney()BEGINDECLAREt_errorINTDEFAULT0;DECLARECONTINUEHANDLERFORSQLEXCEPTIONSETt_error=1;STARTTRANSACTION;UPDATEbankSETCurrentMoney=CurrentMoney-200WHERECustomerName=张三;#捕获异常,执行异常处理程序,然后继续执行后续的SQL语句UPDATEbankSETCurrentMoney=CurrentMoney+200WHERECustomerName=李四;IFt_error=1THENROLLBACK;ELSECOMMIT;ENDIF;END;4.使用事务实现银行转账

任务实施【练习】模拟实现ATM取款机的取款和存款业务。需求说明:(1)实现一种取款或存款中的一种业务便可。(2)交易步骤如下:向交易明细表插入交易类型(支取/存入)。更新账户余额。

任务总结事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全都不做,是一个不可分割的工作单位。保证数据库从一个一致性状态到另一个一致性状态。

显示全部
相似文档