- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 
                        查看更多
                        
                    
                实验:事务1
一、实验目的与任务
目的:旨在训练学生能创建带有事务的存储过程及了解事务的并发情况。
任务:根据需求,写出满足条件的存储过程。
任务1:在SchoolInfo数据库中执行如下语句:
create table Ticket
(
	TicketInfo varchar(20) primary key,
	TicketLeaveNum int
)
insert into Ticket values(G0001,10)
任务2:测试事务执行情况。
create proc prcInsertStudent
as
begin try
begin transaction
INSERT INTO Student VALUES(A00010,‘Andy,21,男,Nanjing,90,1)
INSERT INTO Student VALUES(‘A00011’,‘mary’,21,女,Nanjing,150,1)
commit transaction
end try
begin catch
	rollback transaction
end catch
以上事务执行时,A00011号记录的成绩值超出了范围,编译器报错,此时会被Catch语句捕获,回滚事务,数据库中两条记录都不能插入。
可将A00011号记录的成绩改为90,重新测试存储过程,两条语句同时被成功插入数据库。
任务3: 创建事务,假设给定学号的学生将从原系转入给定的系,则相应的系总人数将发生变化,如果两系相差人数小于10,则允许该生转系,否则回滚事务。假设系表Department(DepID,DepName,Total)
答案:
create proc prcTransfer
@StuID char(10),
@DepName varchar(20)
as
begin try
   if exists(select * from Student where StuID=@StuID)
      if exists(select * from Department where DepName=@DepName)
         begin
            begin transaction
               declare @OriginDepID int
               select @OriginDepID=DepID from Student where StuID=@StuID
               declare @NewDepID int
               select @NewDepID=DepID from Department where DepName=@DepName
               update Student set DepID=@NewDepID where StuID=@StuID
               declare @OriginTotal int
               declare @NewTotal int
               update Department set Total=Total-1 where DepID=@OriginDepID
               update Department set Total=Total+1 where DepID=@NewDepID
               select @OriginTotal=Total from Department where DepID=@OriginDepID
               select @NewTotal=Total from Department where DepID=@NewDepID
               if(@NewTotal-@OriginTotal=-10 and @NewTotal-@OriginTotal=10)
                  commit Transaction
               else
                  Rollback Transaction
         end
            else printDepName不存在
         else printStuID不存在
end try
begin catch
   Rollback Transaction
end catch
执行:
exec prcTransferA00001,math
任务4: SC表和Department表需要用下面的事务来更新:
事务1:
UPDAT
                您可能关注的文档
- Linux系统管理实战教程(Red Hat Enterprise Linux 8CentOS 8)课件 任务19 配置Samba文件共享.pptx
 - Linux系统管理实战教程(Red Hat Enterprise Linux 8CentOS 8)课件 任务20 配置DHCP服务.pptx
 - Linux系统管理实战教程(Red Hat Enterprise Linux 8CentOS 8)课件 任务6 使用shell.pptx
 - Linux系统管理实战教程(Red Hat Enterprise Linux 8CentOS 8)课件 任务21 配置DNS域名解析服务.pptx
 - Linux系统管理实战教程(Red Hat Enterprise Linux 8CentOS 8)课件 任务22 配置FTP服务.pptx
 - Linux系统管理实战教程(Red Hat Enterprise Linux 8CentOS 8)课件 任务23 用Apache部署静态网站.pptx
 - Linux系统管理实战教程(Red Hat Enterprise Linux 8CentOS 8)课件 任务24 部署LAMP环境.pptx
 - MySQL数据库系统原理 课件 1. Linux与数据库概述.pptx
 - MySQL数据库系统原理 课件 5. 索引原理基础.pptx
 - MySQL数据库系统原理 课件 6. 事务处理与锁.pptx
 
最近下载
- 《中小学综合实践活动课程指导纲要》教育部2017.docx VIP
 - 水浒传108好汉的绰号名字主要事迹及好句赏析.pdf VIP
 - 2025年度吉林省国资委监管企业集中招考联合(1214人)考试备考试题及答案解析.docx VIP
 - 高中数学《抛物线及其标准方程》导学案教学设计.docx VIP
 - 防烟分区课件.ppt VIP
 - 《中小学综合实践活动课程指导纲要》教育部2025版.docx VIP
 - 强化思想淬炼筑牢信仰之基.pptx VIP
 - 2026年山东省港口集团有限公司应届大学毕业生招聘考试备考试题及答案解析.docx VIP
 - 关于钎探锤击数换算为地基承载力的说明.doc VIP
 - 污水处理池新项目施工组织设计.doc VIP
 
原创力文档
                        

文档评论(0)