SQL--实验八

1.为“图书信息”表创建一个名为del_bk_tr的DELETE触发器,该触发器的作用是禁止删除图书信息表中的记录。
  create trigger del_bk_tr on 图书信息 instead of delete  
as select'无法删除"图书信息"表的信息'


2. 为“借阅信息”表建立一个名为insert_brw_tr的INSERT触发器,当用户向“借阅信息”表中插入记录时,如果插入的记录是在读者信息表没有的借阅证号或者在图书信息表中没有的课程编号,则提示用户不能插入记录,否则提示记录插入成功。
create trigger insert_brw_tr on 借阅信息
after insert as
declare @bno varchar(10),@tsno varchar(10)
select @bno=(select 借阅证号 from inserted)
select @tsno=(select 图书编号 from inserted)
if not exists (select 借阅证号 from 读者信息 where 借阅证号=@bno)
begin
   delete from 借阅信息 where 借阅证号=@bno
   select '不能插入记录'
end
if not exists (select 图书编号 from 图书信息 where 图书编号=@tsno)
begin
   delete from 借阅信息 where 图书编号=@tsno
   select '不能插入记录'
end
if exists (select 借阅证号 from 读者信息 where 借阅证号=@bno) and exists (select 图书编号 from 图书信息 where 图书编号=@tsno)
begin
   select '记录插入成功。'
end

3.为“读者信息”表创建一个名为update_bk_tr 的UPDATE触发器,该触发器的作用是禁止更新读者信息表中的“借阅证号”字段的内容。
CREATE trigger update_bk_tr on 读者信息 
AFTER UPDATE AS
declare @BNO1 VARCHAR(10) ,@BNO2 VARCHAR(10)
SELECT @BNO1=借阅证号 from inserted
SELECT @BNO2=借阅证号 from deleted
if @BNO1!=@BNO2
begin
print '不能更改借阅证号字段的内容'
update 读者信息 set 借阅证号=@BNO2 where 借阅证号=@BNO1
end

4. 使用T-SQL语句DROP  TRIGGER删除update_bk_tr 触发器。

DROP TRIGGER update_bk_tr


5.为“图书信息”表建立删除触发器del_bk_tr,要求当图书信息表的记录被删除后,借阅信息表中相应的记录也能自动删除。
create trigger del_bk_tr on 图书信息
after delete
as
delete from 借阅信息 where 图书编号=(select 图书编号 from deleted)


6.在“借阅”表上建立一个触发器,完成如下功能:如果读者借阅的书名是“数据库技术与应用”,就将该读者的借阅记录保存在BORROW_ SAVE表中(注:BORROW_ SAVE表结构与借阅信息表相同,需要先创建这个表)。
  
CREATE TRIGGER TR_SAVE ON 借阅信息
	FOR INSERT , UPDATE
	AS
	IF  @@ROWCOUNT>0
    INSERT BORROW_SAVE  SELECT  a.*  FROM  INSERTED a , 图书信息 b  WHERE  a.图书编号=b.图书编号 AND  b.书名='数据库技术与应用'

 

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

5210丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值