下载此文档

数据库实验报告四.doc


文档分类:IT计算机 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
《数据库原理》实验报告
实验七:
事务与并发控制
学号
姓名
班级
日期
杨添文

实验七:事务与并发控制
实验内容
假设学校允许学生将银行卡和校园卡进行绑定,在student数据库中有如下的基本表,其中校园卡编号cardid即为学生的学号:
icbc_card(studcardid,icbcid,balance) //校园卡ID,工行卡ID,银行卡余额
campus_card(studcardid,balance) //校园卡ID,校园卡余额
针对以上数据库按照要求完成下列实验:
编写一个事务处理(begin tran)实现如下的操作:某学号为的学生要从银行卡中转账200元到校园卡中,若中间出现故障则进行rollback。(15分)
程序代码如下:
declare ***@balance int
select ***@balance=balance-200
from icbc_card
where studcardid=''
update icbc_card
set balance=***@balance
where studcardid=''
update campus_card
set balance=balance+200
where studcardid=''
if ***@balance<0
rollback
commit;
(2)结果如下:
(结果很明显,阴影部分即显示操作已成功。)
针对本题的数据库和表,分别用具体的例子展现四种数据不一致问题:丢失修改、读脏数据、不可重复读和幻读(删除和插入)。(40分,每种数据不一致10分)
丢失修改:
代码如下:
set tran isolation level read uncommitted
declare ***@balance int
select ***@balance=balance
from icbc_card
where studcardid=''
waitfor delay '00:00:10'
update icbc_card
set balance=***@balance-300
where studcardid=''
select balance
from icbc_card
where studcardid=''
这段代码执行的时间设置为10秒,在此期间,重复执行这段代码(可以增加一个窗口,在10秒内执行),结果如下截图:

很明显,若是成功修改,balance中的数据就会是400,而不是700。
读脏数据:
代码如下:(两个事务的执行时间间隔不超过10秒)
1、先编写代码执行事务1(执行一次对balance的操作,回滚)
set tran isolation level read uncommitted
begin tran
update icbc_card
set balance=balance+2000
where studcardid=''
select balance
from icbc_card

数据库实验报告四 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数10
  • 收藏数0 收藏
  • 顶次数0
  • 上传人bai1968104
  • 文件大小165 KB
  • 时间2021-01-09
最近更新