实验五:触发器和存储过程

实验五:触发器和存储过程

ID:38703547

大小:194.00 KB

页数:8页

时间:2019-06-17

实验五:触发器和存储过程_第1页
实验五:触发器和存储过程_第2页
实验五:触发器和存储过程_第3页
实验五:触发器和存储过程_第4页
实验五:触发器和存储过程_第5页
资源描述:

《实验五:触发器和存储过程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验五:触发器和存储过程一.实验目的:理解触发器和存储过程的含义,掌握用SQL语句实现触发器和存储过程的编写,并初步掌握什么情况下使用事务。二.实验内容:有一个小型的图书管理数据库,包含的表为:bookstore(bookid,bookname,bookauthor,purchasedate,state);--图书库存表borrowcard(cardid,ownername);--借书证表borrowlog(cardid,bookid,borrowdate,returndate);--借书记录表写一个存储过

2、程,实现借书操作,要求有事务处理。(1)读者借书,要先设置书籍不在库标志state(借出),然后增加借书记录,在同一事务中完成。(2)要求在事务执行过程中引入错误触发事件,以此体会事务的错误保护机制和事务编程的作用。(3)要求用触发器实现表的完整性控制。三、操作与运行1.创建图书数据库:createtablebookstore(bookidintnotnullprimarykey,booknamechar(20),bookauthorchar(20),purchasedatedatetime,statech

3、ar(4))createtableborrowcard(cardidintnotnullprimarykey,ownernamechar(20))createtableborrowlog(cardidintnotnull,bookidintnotnull,borrowdatedatetime,returndatedatetime,primarykey(cardid,bookid),---foreignkey(cardid)referencesborrowcard(cardid),---foreignkey(

4、bookid)referencesbookstore(bookid))通过以上语句,可以看到数据库中的表建立成功。2.创建存储过程:createprocbook_borrow@mycardid_inint,@mybookid_inint,@str_outchar(30)outputasbeginifnotexists(select*fromborrowcardwherecardid=@mycardid_in)beginset@str_out='该读者不存在'returnendif(selectstatefr

5、ombookstorewherebookid=@mybookid_in)='借出'beginset@str_out='该书以借出'endbegintraninsertintoborrowlogvalues(@mycardid_in,@mybookid_in,getdate(),null)if@@error>0beginrollbacktranset@str_out='执行过程中遇到错误!'returnendupdatebookstoresetstate='借出'wherebookid=@mybookid_i

6、nif@@error>0beginrollbacktranset@str_out='执行过程中遇到错误!'returnendif@@error=0begincommittranset@str_out='借书成功!'return1elsebeginrollbacktranset@str_out='执行过程中遇到错误!'returnendEnd查看执行结果:执行存储过程:当违反参照完整性时:declare@str_outchar(30)execbook_borrow1114060119,106,@str_out

7、outputprint'执行情况'+@str_out当图书已借出时执行结果会是:declare@str_outchar(30)execbook_borrow1114060114,102,@str_outoutputprint'执行情况'+@str_out当正常执行时(即不违反完整性时):原先的借书记录有:正常借书时:declare@str_outchar(30)execbook_borrow1114060116,105,@str_outoutputprint'执行情况'+@str_out查看借书记录:查看图

8、书在库状态:由此可知借书成功。3.创建触发器:createtriggerdelete_borrowlogonbookstorefordeleteasbegindeletefromborrowlogwherebookidin(selectbookidfromdeleted)End执行:deletefrombookstorewherebookid='102'结果:查看结束记录情况:可知删除触发器创建成功。create

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。