ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:19.72KB ,
资源ID:18021894      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18021894.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(图书管理系统触发器和存储过程文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

图书管理系统触发器和存储过程文档格式.docx

1、 Bwriter nvarchar(20) NOT NULL,-作者 BpubAdr varchar(30) NOT NULL,-出版社 BpubDate smalldatetime,-出版日期 Btype varchar(20),-类别 BtotalNum int NOT NULL,-总量 BborrowedNum int default 0,-借出量默认值为零 constraint Book_PK primary key (Bid)-创建“分类号”为主键) -读者信息表CREATE TABLE Reader Rno nvarchar(10) NOT NULL,-读者编号 Rname nva

2、rchar(20) NOT NULL,-姓名 Rsex char(2) check(Rsex in (男,女),-性别只能在“男”和“女”之间选择 Rage int not null,-读者年龄 Rphone nvarchar(15),-电话/手机 Readertype nvarchar(20) check (Readertype in (本科生研究生教师),-读者类型只能在“本科生”,“研究生”,“教师”之间选择 constraint Reader_PK primary key (Rno)-创建“读者编号”为主键-读者借阅信息表create table ReaderBook RBorrowD

3、ate smalldatetime NOT NULL,-借阅日期 RBackDate smalldatetime not null,-应还书日期 RReborrowTimes tinyint default 0,-续借次数默认为次 RoverdueDays int,-图书超期天数 constraint ReaderBook_PK primary key (Rno,Bid),-创建“读者编号,分类号”为主键 foreign key (Rno) references Reader(Rno),-创建“读者编号”为外部键 foreign key (Bid) references Book(Bid)-创

4、建“分类号”为外部键-用户表create table Admin AdminId varchar(10)not null,-用户ID AdminPsw varchar(10)not null,-用户密码 AdminName varchar(20)not null,-用户名 constraint Admin_PK primary key(AdminId)-创建用户ID为主键Create table RReturnBook Rno nvarchar(10) NOT NULL, Bwriter nvarchar(20),-作者 Btype varchar(20),-图书类别 BpubAdr varc

5、har(30),-出版社 RborrowTimes tinyint default 1,-记录读者借借阅同一本书的次数 ReturnDate smalldatetime,-还书时间 constraint RReturnBook_PK primary key (Rno,Bid,RborrowTimes),-创建主键 constraint Rno_Fk foreign key (Rno) references Reader(Rno), constraint RBid_FK foreign key (Bid) references Book(Bid)-创建外码Go图书馆管理系统数据库-触发器的创建-

6、借书要求(书本没有库存,则无法进行借书操作)-create trigger tri_Bookon Bookfor updateasdeclare btotal int,bborrowed intselect btotal=BTotalNum,bborrowed=BborrowedNum from insertedif(btotal10)-假定教师最多只能借十本书 begin rollback transaction print print对不起,你的借阅总量已经达到本,无法进行本次借书操作!请归还部分书籍后,再进行下次借书操作! end5)-假定本科生最多只能借五本书 Print借阅失败!8)

7、-假定研究生最多只能借八本书end -续借次数要求-假定教师最多允许续借四次,本科生最多允许续借两次,研究生最多可以续借三次-Create trigger tri_RRenewBookdeclare t tinyintselect t=inserted.RReborrowTimes from inserted,Reader where Reader.Readertype= if(t4)-教师最多允许续借四次续借失败!对不起,你的续借次数已经达到了四次,已经无法再续借!2)-本科生最多允许续借两次对不起,你的续借次数已经达到了两次,已经无法再续借!3)-研究生最多允许续借三次对不起,你的续借次数

8、已经达到了三次,已经无法再续借!-读者还书信息入ReturnBook表-Create trigger tri_RReturnBookfor deletedeclare t int,tno varchar(10),Bid varchar(30)select top 1 tno=Rno from deletedselect top 1 Bid=Bid from deleted-图书信息更改过程update Bookset BborrowedNum=BborrowedNum-1where Bid=Bid-判断RrturnBook表中该读者是否已借过同样一本书籍select t=RborrowTime

9、s from ReturnBook where Rno=tno and Bid=Bidif(t0)-t0说明该读者过去借过同一本书 set t=t+1else set t=1-向ReturnBook表中插入信息-第一部分(主码先入)insertinto ReturnBook(Rno,Bid,RborrowTimes,ReturnDate)values (tno,Bid,t,getdate()-第二部分(读者、书本信息)update ReturnBookset Rname=(select Rname from Reader where Rno=tno) ,Rsex=(select Rsex fr

10、om Reader where Rno=tno) ,Rage=(select Rage from Reader where Rno=tno) ,Bname=(select Bname from Book where Bid=Bid) ,Bwriter=(select Bwriter from Book where Bid=Bid) ,Btype=(select Btype from Book where Bid=Bid) ,BpubAdr=(select BpubAdr from Book where Bid=Bid)where Rno=tno and Bid=Bid图书馆管理系统数据库-存储

11、过程的创建-读者借阅图书存储过程-create procedure RBorrowBookno varchar(10),Bid varchar(30)declare bname varchar(50)-判断读者是否已经借阅同一本书,如果已有借阅记录,则不能进行借书操作if exists(select * from ReaderBook where Rno=no and Bid=Bid)对不起,你已经借阅了同一本图书,故而无法进行此次借书操作,请核实!-图书信息更改 update Book set BborrowedNum=BborrowedNum+1 where Bid=Bid-读者借阅过程

12、insert into ReaderBook (Rno,Bid,RBorrowDate) values (no,Bid,getdate()-输出借书成功信息 declare rname varchar(8) select rname=Rname from Reader where Rno=no select bname=Bname from Book where Bid=Bid select 编号为+no+,姓名为+rname+的读者,于+datename(year,GETDATE()+ 年+datename(month,GETDATE()+ 月+datename(day,GETDATE()+

13、 日+datename(hour,GETDATE()+ 时+datename(minute,GETDATE()+ 分+datename(second,GETDATE()+ 秒,成功地从图书馆借出+bname+一书! as 读者借书成功信息-读者还书存储过程-create procedure ReturnBook-判断读者是否借阅此书,如果没有借阅此书,则不能进行还书操作if not exists(select * from ReaderBook where Rno=no and Bid=Bid)对不起,你没有借阅此书,故而无法进行此次还书操作,请核实!-读者还书过程delete where R

14、no=no and Bid=Bid-#图书信息更改过程在触发器tri_RReturnBook中#-输出还书成功信息 秒,成功地向图书馆归还 as 读者还书成功信息-读者续借图书存储过程-create procedure RRenewBookdeclare bname varchar(50),renewNum char(1),time smalldatetime-判断读者是否借阅此书,如果没有借阅此书,则不能进行续借操作对不起,你没有借阅此书,故而无法进行此次续借操作,请核实!-读者续借图书过程 update ReaderBook set RReborrowTimes=RReborrowTime

15、s+1,renewNum=RReborrowTimes+1,time=RBorrowDate=getdate()-续借一次后,重新计入时间-输出续借成功信息+datename(year,time)+datename(month,time)+datename(day,time)+datename(hour,time)+datename(minute,time)+ 秒,成功地续借一书,续借次数共为+renewNum+ 次! as 读者续借成功信息-读者查询借阅图书情况存储过程-create procedure RQueryBookno varchar(10)declare bname varcha

16、r(50), i int,total int,time smalldatetime,day int-if (charindex(T,no)0)-begin -以读者编号为表名创建临时性数据表declare RtempTable table 读者编号nvarchar(10), 姓名nvarchar(8), 书名varchar(50) primary key, 图书类别Varchar(20), 借书日期smalldatetime not null, -最后续借日期smalldatetime not null, 本次借阅还剩天数int, 续借次数tinyint not null, 是否超期nvarc

17、har(2) -向临时表中插入数据 -第一部分(插入子查询)into RtempTable(书名,图书类别,借书日期,/*最后续借日期,*/续借次数) select Bname,Btype,RBorrowDate/*,RRecentlyRenew*/,RReborrowTimes from Book,ReaderBook where ReaderBook.Rno=no and Book.Bid=ReaderBook.Bid -第二部分declare rname char(8)select rname=Rname from Reader where Rno=noupdate RtempTable set 读者编号=no,姓名=rname -第三部分(计算最后续借到超期还剩天数,并插入对应列)select total=count(*),i=1 from RtempTable-获得RtempTable表中的记录总数while (i=total) select top 1 time=最后续借日期,bname=书名

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1