事务4976986287.ppt
《事务4976986287.ppt》由会员分享,可在线阅读,更多相关《事务4976986287.ppt(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、事务事务4976986287目标l理解事务的概念l掌握如何创建事务2为什么需要事务13-1银行转帐l例如,银行转帐问题:假定资金从帐户A转到帐户B,至少需要两步:l帐户A的资金减少l然后帐户B的资金相应增加 帐户帐户A帐户帐户B3l假定张三的帐户直接转帐假定张三的帐户直接转帐1000元到李四的帐户元到李四的帐户为什么需要事务13-2CREATE TABLE bank(customerName CHAR(10),-顾客姓名 currentMoney MONEY -当前余额)GOALTER TABLE bank ADD CONSTRAINT CK_currentMoney CHECK(curren
2、tMoney=1)GOINSERT INTO bank(customerName,currentMoney)VALUES(张三,1000)INSERT INTO bank(customerName,currentMoney)VALUES(李四,1)创建帐户表,存放用户的帐户信息添加约束:根据银行规定,帐户余额不能少于1元,否则视为销户 张三开户,开户金额为1000元;李四开户,开户金额1元 4为什么需要事务13-3l目前两个帐户的余额目前两个帐户的余额总和为:总和为:1000+1=1001元元 56为什么需要事务13-4l模拟实现转帐模拟实现转帐:从张三的帐户转帐1000元到李四的帐户/*-转
3、帐测试:张三转账1000元给李四-*/-我们可能会这样这样编写语句-张三的帐户少1000元,李四的帐户多1000元UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName=张三UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName=李四GO-再次查看转帐后的结果。SELECT*FROM bank请问:执行转帐语句后,张三、李四的帐户余额为多少?l张三的帐户没有减少 l但李四的帐户却多了1000元 l100010012001元 总额多出了1000元
4、!7为什么需要事务13-5-张三的帐户减少1000元,李四的帐户增加1000元UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName=张三UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName=李四GOl错误原因分析:错误原因分析:UPDATE语句违反约束:余额=1元执行失败,所以张三还是执行失败,所以张三还是1000元元继续往下执行继续往下执行:执行成功,所以李四变为:执行成功,所以李四变为1001元元如何解决呢?使用如何解决呢?使用事务事务
5、8什么是事务l事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作l这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行 l事务是一个不可分割的工作逻辑单元 转帐过程就是一个事务。它需要两条UPDATE语句来完成,这两条语句是一个整体,如果其中任一条出现错误,则整个转帐业务也应取消,两个帐户中的余额应恢复到原来的数据,从而确保转帐前和转帐后的余额不变,即都是1001元。9事务的特性事务必须具备以下四个属性,简称ACID 属性:l原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行l一致性(Consistency
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 事务 4976986287
限制150内