触发器实例

简介:
 
  1. --创建一个插入操作的触发器:当向学生选课表SC中插入一条记录后,变更在学生表STUDENT对应学生的选课门数。  
  2. CREATE TRIGGER STU_IN  
  3. ON SC---对哪个表或者视图进行操作  
  4. FOR INSERT--设定触发条件,也就是在什么情况下会触发这个触发器  
  5. AS   
  6. UPDATE STUDENT  
  7. SET SCNUM = SCNUM +1  
  8. FROM STUDENT INNER JOIN SC  
  9. ON STUDENT.SNO = SC.SNO  
  10.  
  11. set statistics io on 
  12. set nocount on 
  13. insert into sc values('990001','001','99')  
  14. delete from sc where sno='990001' and cno='001' 
  15.  
  16. --创建update触发器  
  17. CREATE TRIGGER STU_UP  
  18. ON STUDENT  
  19. FOR UPDATE 
  20. AS 
  21. IF UPDATE(SNO)  
  22. BEGIN 
  23. RAISERROR('不能对SNO字段进行更新',10,1)  
  24. ROLLBACK TRANSACTION 
  25. END 
  26.  
  27. UPDATE STUDENT  
  28. SET SNO='990032' 
  29. WHERE SNO='990001' 
  30.  
  31. --创建delete触发器  
  32. CREATE TRIGGER STU_DEL  
  33. ON STUDENT  
  34. FOR DELETE 
  35. AS 
  36. DELETE 
  37. FROM SC  
  38. WHERE SC.SNO IN(SELECT SNO FROM DELETED)  
  39.  
  40. exec sp_helptext stu_in--查看已经创建好的触发器的创建语句  
  41.  
  42. CREATE TRIGGER COM_UP  
  43. ON COMPUTER  
  44. INSTEAD OF UPDATE--INSTEAD OF主要用于对视图进行更新  
  45. AS 
  46. IF UPDATE(SNAME)------------------这个SNAME的值来自于输入update语句中的set后面的条件值  
  47. BEGIN 
  48. UPDATE STUDENT  
  49. SET SNAME=INSERTED.SNAME  
  50. FROM STUDENT INNER JOIN INSERTED  
  51. ON STUDENT.SNO=INSERTED.SNO  
  52. END 
  53. ELSE 
  54. BEGIN 
  55. UPDATE SC  
  56. SET CNO=INSERTED.CNO,  
  57. GRADE=INSERTED.GRADE  
  58. FROM SC INNER JOIN INSERTED  
  59. ON SC.SNO=INSERTED.SNO  
  60. END 
  61.  
  62. UPDATE COMPUTER  
  63. SET GRADE=95  
  64. WHERE SNO='990028' 
  65.  
  66. UPDATE COMPUTER  
  67. SET SNAME='王晓晓'-------------------与IF UPDATE(SNAME)中的SNAME相对应  
  68. where SNO='990028' 
  69.  
  70. SELECT * FROM COMPUTER 

定义

触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。



本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/420265,如需转载请自行联系原作者

相关文章
|
9月前
|
SQL 存储 监控
sqlserver触发器详解:sqlserver触发器after/for和instead of的区别详解(实例讲解),触发器定义创建操作打通,触发器的优缺点,触发器使用建议
sqlserver触发器详解:sqlserver触发器after/for和instead of的区别详解(实例讲解),触发器定义创建操作打通,触发器的优缺点,触发器使用建议
1225 1
|
存储 SQL Oracle
Oracle触发器语法及实例
触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,触发器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的。
140 0
|
Oracle 关系型数据库 数据库
|
SQL 存储 Android开发
利用navicat创建存储过程、触发器和使用游标的简单实例
利用navicat创建存储过程、触发器和使用游标的简单实例 标签: navicat存储过程触发器mysql游标 2013-08-03 21:34 15516人阅读 评论(1) 收藏 举报  分类: 数据库(3)  版权声明:本文为博主原创文章,未经博主允许不得转载。
1280 0
|
存储
存储过程,游标和触发器实例
原文:存储过程,游标和触发器实例[原创]   自己写的存储过程与游标结合使用的实例,与大家分享,也供自己查阅,仅供参考: --使用游标循环处理,删除重复的记录 declare @UserID int declare @UserName varchar(32) de...
991 0
|
SQL 存储 测试技术
SQL触发器实例讲解
SQL触发器实例1定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。       常见的触发器有三种:分别应用于Insert , Update , Delete 事件。
1183 0
|
1月前
|
关系型数据库 MySQL
Mysql基础第二十八天,使用触发器
Mysql基础第二十八天,使用触发器
28 0
Mysql基础第二十八天,使用触发器
|
1月前
|
存储 SQL 关系型数据库
【MySQL 数据库】10、MySQL 的触发器
【MySQL 数据库】10、MySQL 的触发器
20 0
|
2月前
|
SQL 存储 关系型数据库
MySQL技能完整学习列表8、触发器、视图和事务——1、触发器(Triggers)的使用——2、视图(Views)的创建和使用——3、事务(Transactions)的管理
MySQL技能完整学习列表8、触发器、视图和事务——1、触发器(Triggers)的使用——2、视图(Views)的创建和使用——3、事务(Transactions)的管理
37 0