SQL触发器

 
  1. 1.创建一个触发器,当一本书被还回时,从LOAN表中删除相应的借阅记录,将该学生借阅这本书记录添加到LoadHist表中;并检查是否有用户在等待预约这本书,如有则将这本书的借阅状况修改为已经预约;按照预约的日期先后,先向预约在前的用户发送信息,并将状态改为T。
  2. 2.创建一个触发器,当借书成功,则检索是否有这个用户的预约该书的记录,如果有,则删除相应的预约记录。
  3. 3.创建一个触发器,当读者还书时,如果超期罚款,通过触发器在收费表中添加一条收费记录。
  4. 1.createtriggerumgsaiON
  5. loan--在Goods表中创建触发器
  6. fordelete
  7. As--事件触发后所要做的事情
  8. begin
  9. declare@借阅证号char(20);
  10. declare@借阅证号1char(20)
  11. declare@书号char(20);
  12. declare@借阅日期char(20);
  13. declare@归还日期char(20);
  14. declare@ISBNchar(20);
  15. select@借阅证号=L.借阅证号fromdeletedL;
  16. select@书号=L.书号fromdeletedL;
  17. select@借阅日期=L.借阅日期fromdeletedL;
  18. select@ISBN=(selectISBNfrombookswhere书号='@书号')
  19. set@归还日期=getdate()
  20. begin
  21. insertintoloanhist(借阅证号,书号,借阅日期,归还日期)values(@借阅证号,@书号,@借阅日期,@归还日期);
  22. select@借阅证号1=(selecttop1借阅证号fromreservationwhereISBN=@ISBN)
  23. updatereservationset状态='T'where借阅证号=@借阅证号1
  24. end;
  25. end;
  26. 2.
  27. createtriggerumgsai1ON
  28. loan--在Goods表中创建触发器
  29. forinsert
  30. As--事件触发后所要做的事情
  31. begin
  32. declare@借阅证号char(20);
  33. declare@书号char(20);
  34. declare@ISBNchar(20);
  35. select@借阅证号=L.借阅证号frominsertedL
  36. select@书号=L.书号frominsertedL
  37. select@ISBN=(selectISBNfrombookswhere书号=@书号)
  38. begin
  39. deletefromreservationwhere借阅证号=@借阅证号andISBN=@ISBN
  40. end;
  41. end;

本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/702562

你可能感兴趣的:(sql)