2015版《数据库原理实验》指导书(4)

2019-04-21 13:51

实验九 事务与死锁*

课程名称: 学时

数据库原理实验 4

实验类型:

验证型

实验目的

1.了解事务的ACID属性,掌握事务和批处理的工作原理。 2.了解死锁的类型和其兼容性。 3.了解死锁发生的情况。 4.了解可锁定的资源。

5.了解死锁的一般处理过程。 实验内容:

1.银行业务数据库bankdb,其中,帐户信息表(bank)存放帐户的信息,交易信息表(transInfo)存放每次的交易信息。 (1)试用事务解决银行转帐问题。

参考代码如下: BEGIN TRANSACTION

/*--定义变量,用于累计事务执行过程中的错误--*/ DECLARE @errorSum INT

SET @errorSum=0 --初始化为0,即无错误

/*--转帐:张三的帐户少1000元,李四的帐户多1000元*/ UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName='张三' SET @errorSum=@errorSum+@@error

UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName='李四'

SET @errorSum=@errorSum+@@error --累计是否有错误 IF @errorSum<>0 --如果有错误 BEGIN

print '交易失败,回滚事务' ROLLBACK TRANSACTION END ELSE BEGIN

print '交易成功,提交事务,写入硬盘,永久的保存' COMMIT TRANSACTION

14

END GO

print '查看转帐事务后的余额' SELECT * FROM bank GO

(2)试演示:分别转帐1000和800时的转帐情况。注意:转账时不得出现透支。

2.实验内容

1)锁与并行查询执行相关的资源。 2)如何查看进程信息。 实验步骤

打开两个查询窗口,并发执行下面两个事务 2)

--transaction 1 begin tran update student set age=20

where student_name='曹雨'

--阻塞秒钟

waitfor delay '00:00:10'

update sc

set writtenScore=76

where student_id='g9940201' and course_id='dep04_b001' commit;

2)

--transaction 2 begin tran update sc

set writtenScore=76

where student_id='g9940201' and course_id='dep04_b001'

--阻塞秒钟

waitfor delay '00:00:10'

update student set age=20

where student_name='曹雨'

15

commit;

3)处理死锁的一般过程或步骤。

Sp_who:提供关于当前Microsoft SQL Server用户和进程信息。如:列出

全部当前进程。

在SQL查询分析器的命令窗口中输入 sp_who

sp_lock:报告有关锁的信息

在SQL查询分析器的命令窗口中输入

sp_lock @spid1=从sp_who中查出的进程标识号 实验报告

1、实验各项内容实现的过程。 2、实验结果分析。

16


2015版《数据库原理实验》指导书(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:(云发[2012]5号)中共云南省委 云南省人民政府关于推动工业跨越

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: