数据库第三次大作业(全答案).docx
- 文档编号:79818
- 上传时间:2022-10-02
- 格式:DOCX
- 页数:4
- 大小:19.41KB
数据库第三次大作业(全答案).docx
《数据库第三次大作业(全答案).docx》由会员分享,可在线阅读,更多相关《数据库第三次大作业(全答案).docx(4页珍藏版)》请在冰豆网上搜索。
{
4.作业3——存储过程与触发器设计任务
任务:
1)为BookStore数据库增加一个用户oper1,允许oper1对图书表和借还表进行修改操作。
useBookStore
go
execsp_addloginoperl,'(此处为密码)','BookStore'
go
execsp_addrolemember'db_datareader','operl'
】
grantupdateon图书表tooperl
grantupdateon借还表tooperl
2)设计存储过程
a)数据初始化过程sp_Init。
包含的操作有:
所有的用于测试图书信息、教师信息、历史记录清空,输入图书分类、输入管理员信息、输入借书规定。
略,界面进行输入或者代码输入作业用数据
b)某教师在某时间借了某本书,由某管理员办理。
createprocedureproc_lendbook
@aidchar(10),
—
@atimedatetime,
@ISBNchar(20),
@anamenchar(4)
as
begin
update图书表
set状态='借出'
whereISBN=@ISBN
—
insertinto借还表(ISBN,教师工号,借办代理人,借出日期)
values(@ISBN,@aid,@aname,@atime)
end
c)某教师在某时间还了某本书,由某管理员办理
createprocedureproc_returnbook
@bidchar(10),
@btimedatetime,
`
@ISBNchar(20),
@bnamenchar(4)
as
begin
update图书表
set状态='库存'
whereISBN=@ISBN
update借还表
!
set还办代理人=@bname,归还日期=@btime
where教师工号=@bidandISBN=@ISBN
end
d)查看某人的全部借还书记录
createprocedureproc_getReaderlog
@cnamenchar(4),
@
@cidchar(10)
as
begin
selectb.姓名,c.书名,a.借出日期,归还日期
from借还表ajoin教师表bona.教师工号=b.教师工号join图书表con=
whereb.姓名=@cnameorb.教师工号=@cid
end
e)。
f)查看某本书的历史流转记录
createprocedureproc_getBooklog
@booknamenchar(10),
@ISBNchar(20)
as
begin
select教师表.姓名,图书表.书名,借还表.借出日期,归还日期
from借还表ajoin教师表bona.教师工号=b.教师工号join图书表con=
"
where=@ISBNorc.书名=@bookname
end
g)某管理员在某时间给全部借阅过期者发催还邮件。
部分有错误的需要将修改催还业务编号为自增长(identity(1,1)),还有整个表都要允许空值:
例:
altertable催还表
altercolumn办代理人char(4)null
、
createprocedureproc_writeEmailLog
@dnamechar(4),
@dtimedatetime
as
begin
insertinto催还表(教师工号)
select教师工号
from借还表ajoin图书表bon=join类型表conb.类型名=c.类型名
:
wheredatediff(day,a.借出日期,getdate())>c.借阅期限anda.归还日期isnull
update催还表
set办代理人=@dname,催还日期=@dtime
where催还日期isnull
end
g)对书名进行模糊搜索(搜索条件可以是多个模糊列值的组合,例如:
搜索书名包含“网络”两个字,并且是近3年出版的图书)
createprocedureproc_search
{
@booknamenchar(10),
@maxtinyint
as
begin
select*
from图书表
wheredatediff(year,出版时间,getdate())<@maxand书名like'%'+@bookname+'%'
end
?
3)设计触发器
a)当oper1用户对图书状态进行修改时,自动在借还表追加相应的数据。
createtriggertri_a
on图书表afterupdate
as
;
declare@statuschar(4)
declare@ISBNchar(20)
select@status=状态frominserted
select@ISBN=ISBNfrominserted
ifuser_name()='operl'
begin
if@status='借出'
insertinto借还表(ISBN,借办代理人,借出日期)
:
values(@ISBN,user_name(),getdate())
elseif@status='库存'
update借还表
set还办代理人=user_name(),归还日期=getdate()
whereISBN=@ISBN
end
b)不允许oper1用户对催还表信息进行删除操作,如果删除进行回滚。
createtriggertri_b
on催还表afterdelete
as
ifuser_name()='operl'
begin
if(selectcount(*)fromdeleted)>0
rollback
end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 第三次 作业 答案