触发器-----------数据库(SQL)

http://fatedgar.iteye.com/blog/1323998

格式:

create trigger tri_name
on table_name
[for (insert/update/delete)]
/[instead of (insert/update/delete)]
as
    statement


create trigger 名称
on 表名for (insert update delete 其中之一)
as
   语句


Sql代码   收藏代码
  1. alter trigger tri_insert  
  2. on course for insert  
  3. as  
  4. declare @name nchar(5)  
  5. select @name=coursename from inserted  
  6. print '名称'+@name+'已被加入表!'  
  7.    
  8. insert course  
  9. values ('007','计算机英语','004')  



Sql代码   收藏代码
  1. create trigger tri_delname  
  2. on course for delete  
  3. as  
  4. declare @name nchar(10)  
  5. select @name=coursename from deleted  
  6. print '名称'+@name+'已被删除出表!'  
  7.    
  8. delete from course  
  9. where course_id='006'  



Sql代码   收藏代码
  1. create trigger tri_upname  
  2. on course for update  
  3. as  
  4. declare @oldname nchar(10)  
  5. declare @newname nchar(10)  
  6. select @oldname=coursename from deleted  
  7. select @newname=coursename from inserted  
  8. print '名称'+@oldname+'已被更新为'+@newname  
  9.    
  10. update course  
  11. set coursename='计算机管理'  
  12. where course_id='007'  
  13.    


Sql代码   收藏代码
  1. alter trigger tri_inname  
  2. on course instead of insert  
  3. as  
  4. print '名称'+@name+'未被加入表!'  
  5.    
  6. insert into course  
  7. values('006','信息管理','002')  



Sql代码   收藏代码
  1. create trigger tri_upsc  
  2. on sc for update  
  3.  as  
  4.    declare @sid nchar(10)  
  5.    declare @cid nchar(10)  
  6.    declare @oldscore int  
  7.    declare @newscore int  
  8.    select @sid=student_id,@cid=course_id,@oldscore=score  
  9.    from deleted  
  10.    select @newscore=score from inserted  
  11. print '在'+convert(nvarchar(30),getdate())+  
  12.       @sid+'的'+@cid+'课程成绩由'+  
  13.        convert(nvarchar(3),@oldscore)+  
  14.       '改变为'convert(nvarchar(3),@newscore)  
  15.    
  16. update sc  
  17. set score=60  
  18. where student_id='002' and course_id='003'  



Sql代码   收藏代码
  1. create trigger tri_insname  
  2. on teacher for insert  
  3. as  
  4.  declare @name nchar(10)  
  5.  select @name=tname from inserted  
  6.  print '教师'+@name+'插入到教师表中!'  


Sql代码   收藏代码
  1. create trigger tri_delname  
  2. on teacher for delete  
  3. as  
  4.    declare @name nchar(10)  
  5.  select @name=tname from deleted  
  6.  print '教师'+@name+'从教师表中删除了!'  


Sql代码   收藏代码
  1. create trigger tri_upname  
  2. on teacher for update  
  3. as  
  4.    declare @oldname nchar(10),@newname nchar(10)  
  5.  select @oldname=tname from deleted  
  6.  select @newname=tname from inserted  
  7.  print '教师'+@oldname+'改名为'+@newname  



Sql代码   收藏代码
  1. create trigger tri_upsc  
  2. on sc for update  
  3.  as  
  4.    declare @sid nchar(10)  
  5.    declare @cid nchar(10)  
  6.    declare @oldscore int  
  7.    declare @newscore int  
  8.    select @sid=sid,@cid=cid,@oldscore=score  
  9.    from deleted  
  10.    select @newscore=score from inserted  
  11. print '在'+convert(nvarchar(30),getdate())+  
  12.       @sid+'的'+@cid+'课程成绩由'+  
  13.        convert(nvarchar(3),@oldscore)+  
  14.       '改变为'convert(nvarchar(3),@newscore)  


Sql代码   收藏代码
  1. create trigger tri_inssc  
  2. on sc for insert  
  3. as  
  4.    declare @sid nchar(10)  
  5.    declare @cid nchar(10)  
  6.    declare @s int  
  7.    select @sid=sid,@cid=cid,@s=score  
  8.    from inserted  
  9.    print @sid+'的'+@cid+'课程成绩'+convert(nvarchar(3),@s)  
  10.           +'插入到成绩表中'  
  11.    
  12. insert into sc  
  13. values ('004','004',100)  
  14. update sc  
  15. set score=60  
  16. where sid='002' and cid='003'  
  17.    
  18. update teacher  
  19. set tname='叶问'  
  20. where tid='004'  
  21.    
  22. insert into teacher  
  23. values ('005','李云松')  


十一
Sql代码   收藏代码
  1. create trigger tri_inscourse  
  2. on course for insert  
  3. as  
  4.  declare @name nchar(10)  
  5.  select @name=cname from inserted  
  6.  print '名称为:'+@name+'的课程插入到课程表中!'  
  7.    
  8. insert into course  
  9.  values('006','数据库程序设计','001')  

十二
Sql代码   收藏代码
  1. create trigger tri_upcname  
  2. on course for update  
  3. as  
  4.    declare @oldname nchar(10)  
  5.    declare @newname nchar(10)  
  6.    select @oldname=cname from deleted  
  7.    select @newname=cname from inserted  
  8.    print '课程名:'+@oldname+'改名为'+@newname  
  9.    
  10. update course  
  11. set cname='数据库管理'  
  12. where cid='006'  

十三
Sql代码   收藏代码
  1. create trigger tri_delname1  
  2. on course for delete  
  3. as  
  4.  declare @name nchar(10)  
  5.  select @name=cname from deleted  
  6.  print '课程'+@name+'删除了!'  
  7.    
  8. delete from course  
  9. where cid='006'  
  10.    

十四
Sql代码   收藏代码
  1. create trigger tri_insofname  
  2. on course instead of insert  
  3.  as  
  4.    print '当前用户无权插入数据!'  
  5.    
  6. insert into course  
  7. values('006','数据库管理','001')  

十五
Sql代码   收藏代码
  1. create trigger tri_insofname1  
  2. on course instead of update  
  3.  as  
  4.    print '当前用户无权更新数据!'  
  5.    
  6. update course  
  7. set cname='专业英语'  
  8. where cid='005'  


Sql代码   收藏代码
  1. create trigger tri_insertname  
  2.  on student for insert  
  3.  as  
  4.     declare @name nchar(10)  
  5.     select @name=sname from inserted  
  6.     print '学生:'+@name+'插入到学生表中!'  
  7.    
  8. --执行  
  9.  insert into .....  
  10.    
  11.    
  12. create trigger tri_deletename  
  13.  on student for delete  
  14.  as  
  15.      declare @name nchar(10)  
  16.     select @name=sname from deleted  
  17.     print '学生:'+@name+'从学生表中删除了!'  
  18.    
  19. --执行  
  20.     delete from student  
  21.     where ....  
  22.    
  23. create trigger tri_updatename  
  24. on student for update  
  25. as  
  26.     declare @oldname nchar(10)  
  27.     declare @newname nchar(10)  
  28.     select @oldname=sname from deleted  
  29.     select @newname=sname from inserted  
  30.     print '学生:'+@oldname+ '更改为'+@newname  
  31.    
  32. --执行  
  33.  update student  
  34.  set sname='' --新名  
  35.  where sname='' --旧名  
  36.    
  37. create trigger insof_update  
  38. on student instead of update  
  39. as  
  40.    declare @sex nchar(10),@sid nchar(10)  
  41.    select @sex=ssex from inserted  
  42.    select @sid=sid from inserted  
  43.    if @sex not in ('男','女')  
  44.         print '插入值错误,请重做!'  
  45.       else  
  46.          update student  
  47.          set ssex='男'  
  48.          where sid=@sid  
  49.    
  50.    
  51. --执行  
  52.    update student  
  53.    set ssex='va'  
  54.    where sid=''  
  55.     
  56.    update student  
  57.    set ssex='男'  
  58.    where sid='' 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值