欢迎来到天天文库
浏览记录
ID:26315218
大小:482.69 KB
页数:7页
时间:2018-11-26
《数据库实验报告7》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《数据库原理》实验报告题目:实验七事务与并发控制学号姓名班级日期XxxxXxXxx2016.11.10一.实验内容、步骤以及结果假设学校允许学生将银行卡和校园卡进行绑定,在student数据库中有如下的基本表,其中校园卡编号cardid即为学生的学号:icbc_card(studcardid,icbcid,balance)//校园卡ID,工行卡ID,银行卡余额campus_card(studcardid,balance)//校园卡ID,校园卡余额数据创建的代码:1.编写一个事务处理(begintran)实现如下的操作:某学号为201500
2、32的学生要从银行卡中转账200元到校园卡中,若中间出现故障则进行rollback。(15分)修改后的结果:2.针对本题的数据库和表,分别用具体的例子展现四种数据不一致问题:丢失修改、读脏数据、不可重复读和幻读(删除和插入)。(40分,每种数据不一致10分)l丢失修改:--事务一:begintrandeclare@balancedecimal(10,2)select@balance=balancefromcampus_cardwherestudcardid='20150033'waitfordelay'00:00:05'set@balan
3、ce=@balance-10updatecampus_cardsetbalance=@balancewherestudcardid='20150033'committrangoselectbalancefromcampus_cardwherestudcardid='20150033'--事务二:begintrandeclare@balance1decimal(10,2)select@balance1=balancefromcampus_cardwherestudcardid='20150033'set@balance1=@balance1
4、-20updatecampus_cardsetbalance=@balance1wherestudcardid='20150033'committrangoselectbalancefromcampus_cardwherestudcardid='20150033'【事务1】更改了数据,结果为60,但是没有被读到。最终【事务2】的结果50覆盖了【事务1】的更改值,结果不是期望值40l读脏数据--事务一:begintrandeclare@balancedecimal(10,2)select@balance=balancefromcampus_
5、cardwherestudcardid='20150032'updatecampus_cardsetbalance=@balance+100wherestudcardid='20150032'waitfordelay'00:00:05'rollbacktran--回滚goselectbalancefromcampus_cardwherestudcardid='20150032'--事务二:begintrandeclare@balancedecimal(10,2)select@balance=balancefromcampus_cardwh
6、erestudcardid='20150032'updatecampus_cardsetbalance=@balance+50wherestudcardid='20150032'committrangoselectbalancefromcampus_cardwherestudcardid='20150032'【事务1】原数据为50,更改了数据+100,【事务2】读取了表中更改后的值再进行操作,【事务1】回滚。最终的表存储了错误结果。l不可重复读--事务一:begintranselectbalancefromcampus_cardwhere
7、studcardid='20150031'waitfordelay'00:00:05'selectbalancefromcampus_cardwherestudcardid='20150031'committran--事务二:begintranupdatecampus_cardsetbalance=balance+200wherestudcardid='20150031'committranselectbalancefromcampus_cardwherestudcardid='20150031'事务二对数据的改变影响了事物一两次读取数据
8、的值,使读取数据产生错误l幻读Ø插入--事务一:begintranselectbalancefromcampus_cardwherestudcardid='20150031'waitforde
此文档下载收益归作者所有