收藏 分享(赏)

实验五 存储过程和触发器(计科).doc

上传人:hwpkd79526 文档编号:7781564 上传时间:2019-05-25 格式:DOC 页数:3 大小:33.50KB
下载 相关 举报
实验五 存储过程和触发器(计科).doc_第1页
第1页 / 共3页
实验五 存储过程和触发器(计科).doc_第2页
第2页 / 共3页
实验五 存储过程和触发器(计科).doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

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

2、,实现借书操作,要求有事务处理。 (1)读者借书,要先设置书籍不在库标志 state(借出) ,然后增加借书记录,在同一事务中完成。 (2)要求在事务执行过程中引入错误触发事件,以此体会事务的错误保护机制和事务编程的作用。 (3)要求用触发器实现表的完整性控制。四、完成情况(附上设计的 SQL 语句) 。-触发器和存储过程-触发器和存储过程CREATE DATABASE BOOK1gouse BOOK1CREATE TABLE BOOKSTORE(Bookid nvarchar(10),Bookname nvarchar(10),Bookauthor nvarchar(10),purchase

3、date datetime,state Nvarchar(10),primary key(Bookid)Create table Borrowcard(Cardid int,ownername nvarchar(10),primary key(Cardid)Create table Borrowlog(Cardid int,Bookid nvarchar(10),borrowdate datetime,returndate datetime,primary key(Cardid,Bookid)insert into Borrowcard values(12,wyb)insert into Bo

4、rrowcard values(123,wyb)insert into Borrowcard values(1,wyb)insert into Bookstore values(1,数据库, 王珊, 2012-04-23,存在)insert into Bookstore values(2,数据结构, 珊, 2012-11-23,存在)insert into Bookstore values(3,数据结构, 珊, 2011-1-23,存在)insert into Bookstore values(11,数据库 ,王珊 ,2009-10-23,存在)insert into Bookstore va

5、lues(12,数据结构 ,珊 ,2001-11-23,存在)insert into Bookstore values(13,数据结构 ,珊 ,2013-12-23,存在)-借书存储过程create proc borrow1bookid nvarchar(10),cardid intasbegin transactioninsert into Borrowlog(Cardid,Bookid,borrowdate,returndate)values(cardid,bookid,getdate(),null)if exists(select * from bookstore,Borrowcard

6、where bookid=bookid and state=存在 and cardid=cardid)beginupdate bookstore set state=不存在 where bookid=bookidcommit transactionendelsebegin if exists(select * from bookstore where bookid=bookid and state=不存在)Print 不存在该书if not exists(select*from borrowcard,bookstore where cardid=cardid)Print 没有此用户rollba

7、ck transactionEndexec borrow1 3,12exec borrow1 3,123exec borrow1 2,123drop proc borrow1 -删除存储过程Create trigger insert_borrowlogon Borrowlog after insertasdeclare borrowdate datetime,returndate datetimeselect borrowdate=borrowdate,returndate=returndate from insertedif(borrowdatereturndate)print 借书时间不可晚于还书时间rollbackselect * from bookstoreinsert into Borrowlog values(12,1,2013-06-06,2012-05-5)五、 思考题:如何通过系统的设置实现类似的功能,而不需触发器?答:通过定义存储过程或者设置外键约束等方法。六、实验总结:答:对存储过程非常不熟悉,做起来特别生硬。所以我们应该多做上机练习,熟悉 sql 的语言环境,多看书,以提升自己各方面能力。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报