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.书名='数据库技术与应用'

 

你可能感兴趣的:(SQL)