触发器和存储过程

自己写的存储过程和触发器

create proc 过期信息 @是否已还 bit
as
SELECT distinct dzxx.姓名, dzxx.读者编号, gqjyxx.罚款金额
FROM  读者信息 dzxx,借阅卡信息 jykxx,过期借阅信息 gqjyxx
where dzxx.读者编号 = jykxx.读者编号 and
      jykxx.读者条形码 = gqjyxx.读者条形码 and
      gqjyxx.是否已还=@是否已还
go

create proc 预约信息 @预约次数 int
as
select distinct sjxx.书籍名称, sjxx.书籍类别,
      sjxx.作者, sjxx.出版社,aa.预约次数
FROM 书籍信息 sjxx INNER JOIN
      图书预约信息 sjyy
ON    sjxx.书籍条形码 = sjyy.书籍条形码
 inner join
 aa
on aa.书籍名称=sjxx.书籍名称 and aa.预约次数=@预约次数

go

create proc 出版社  @出版社 char(50)
as
SELECT distinct sjxx.书籍名称, sjxx.作者, sjxx.出版社     
FROM 书籍信息 sjxx
where sjxx.出版社=@出版社
go

drop proc 书籍分类

create proc 书籍分类数量
as
SELECT 书籍类别, count(书籍类别) as 数量
FROM 书籍信息
GROUP BY 书籍类别

go

create proc 书籍分类信息
as
select 书籍名称,作者, 出版社,书库编号
from 书籍信息
order by 书库编号
compute count(书籍名称) by 书库编号

go

create proc 按入馆时间查询 @begin_time char(10),@end_time char(10)

--向datetime数据类型的列传参数时,参数数据类型应该是char型的
as
select 书籍名称,作者, 出版社,书库编号
from 书籍信息
where 入馆时间 > @begin_time and 入馆时间 < @end_time
order by 书库编号
compute count(书籍名称) by 书库编号
go 

 

create trigger 增加管理员
on 管理员信息
after insert
as
print '欢迎新员工加入'
go


SET NOCOUNT ON
--试验触发器的操作
INSERT INTO 管理员信息(管理员编号,管理员姓名,管理员工作地点)
   values ('gly011','gg','sk004')
go

 


create trigger 检查借书数量
on 借阅卡信息
after update
as
if update(总借书数量)
begin
 IF ((SELECT 总借书数量 FROM inserted)>4 or (SELECT 总借书数量 FROM inserted)<0)
 print '借书数量不能超过4或小于0'
 rollback
end
go

SET NOCOUNT ON
--试验触发器的操作
update 借阅卡信息
set 总借书数量=5
where 读者条形码 = 'R140C000016001'
go

 


create trigger 续借
on   借阅信息
instead  of  insert
as
if exists( select * from 借阅信息,inserted where 借阅信息.读者条形码 = inserted.读者条形码 and 借阅信息.书籍条形码 = inserted.书籍条形码)
   begin
 update 借阅信息
 set 借阅信息.读者条形码=inserted.读者条形码,
 借阅信息.书籍条形码=inserted.书籍条形码, 
 借阅信息.借出时间=inserted.借出时间,
 借阅信息.到期时间=inserted.到期时间
 from  借阅信息 join  inserted
 on  借阅信息.书籍条形码=inserted.书籍条形码 and 借阅信息.读者条形码=inserted.读者条形码
 print '续借成功'
   end
else
   begin
 insert 借阅信息
 select  读者条形码,书籍条形码,借出时间,到期时间,是否已还,还书时间 from inserted  
 print '借书成功'
   end
go

SET NOCOUNT ON
--试验触发器的操作
insert into 借阅信息(读者条形码,书籍条形码,借出时间,到期时间)
values ('R140C000016003','P140C000010010','2007-4-3','2007-5-3')
go


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值