数据库四 事务管理机制

【实验名称】:

事务管理

【实验目标】:

  1. 通过实验理解事务机制,包括事务的提交、回滚以及死锁;
  2. 事务的并发控制;
  3. 理解脏读

【实验具体要求】:

    1. 利用事务完成如下修改:将教师号“1”修改为“4”,同时修改所有使用该教师号作为外键关联的表中的该字段的值;(不能使用on update约束进行修改,需要先删除外键才能成功)
    2. 创建一个银行账户表,该表包含两列,第一列为账户id,第二列为账户金额。在表中创建两个账户,一个为存储账户,一个为支出账户。存储账户的id为1,金额为100,支出账户的id为2, 金额为50。以上创建的表适用于以下所有的事务实验;

(1)了解事务中回滚的概念并进行以下操作;

    1. 开启一个新事务,查询账户表中的所有数据,然后删除存储和支出账户,查询账户表中的所有数据,记录发生的现象并说明原因;
    2. 将开启的事务回滚,然后再查询账户表中的数据,记录发生的现象并说明原因。

   (2)了解事务提交的概念并进行以下操作;

    1. 开始一个新事务,删除存储账户,然后查询该账户的所有数据,记录发生的现象并说明原因;
    2. 提交该事务,然后尝试回滚刚提交的事务。观察表中的数据是否会发生变化,记录发生的现象并说明原因。

   (3)了解事务阻塞和死锁的概念,并进行以下操作;

    1. 创建一个新的账户表(同上);
    2. 利用命令行窗口分别开启两个事务会话,并分别开启新的事务;
    3. 选择一个窗口将支出账户的金额更新为100,然后在第二个窗口当中将支出账户的金额更新为2400,观察这种更新是否会成功,并说明原因;
    4. 在第一个窗口当中将事务进行提交,在第二个窗口当中进行事务提交,查看支出账户金额
    5. 再次分别再每个窗口当中开启一个新的事务;
    6. 在第一个窗口当中将存储账户的金额更新为2400,在第二个窗口中将支出账户的金额更新为2000;
    7. 然后再在第二个窗口中将存储账户的金额更新为2400,并在第一个窗口中将支出账户的金额更新为2000。两个窗口中的事务会发生什么情况,记录该情况并说明原因;
    1. 演示脏读

(1)创建一个账户表,含有姓名,金额两列,插入两行, 张三 100, 李四 100

(2)分别在两个窗口中,设置隔离级别为读未提交

(3)A窗口假设是张三在操作,张三开启事务,将自己的金额减少了50,李四的金额添加50,让李四查看,B窗口的李四看到钱到账了,满心欢喜。

(4)A窗口的张三回滚操作,过了几天李四再次查看自己的账户,发现不对,钱没到账。

(5)若是将设置隔离级别为不可重复读,(3)中李四看到的是什么?

【实验步骤】:

1.利用事务完成如下修改:将教师号“1”修改为“4”,同时修改所有使用该教师号作为外键关联的表中的该字段的值;(不能使用on update约束进行修改,需要先删除外键才能成功)

2.创建一个银行账户表,该表包含两列,第一列为账户id,第二列为账户金额。在表中创建两个账户,一个为存储账户,一个为支出账户。存储账户的id为1,金额为100,支出账户的id为2, 金额为50。以上创建的表适用于以下所有的事务实验;

(1)了解事务中回滚的概念并进行以下操作;

1)  开启一个新事务,查询账户表中的所有数据,然后删除存储和支出账户,查询账户表中的所有数据,记录发生的现象并说明原因;

再次select,发现表没有了

2)  将开启的事务回滚,然后再查询账户表中的数据,记录发生的现象并说明原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值