上篇文章《机房重构(3)——存储过程》介绍了存储过程的使用,接下来介绍一下触发器的使用。说到触发器,我们并不陌生,我们学习过程中涉及到非常多相关的知识,可是欠缺的实践应用。通过这次机房收费,对触发器有了进一步的理解。

1、简单介绍

触发器也是一种与表事件相关的特殊的存储过程。由事件来触发,当对一个表进行操作(insert,delete,update)时就会激活它运行。经经常使用于加强数据的完整性约束和业务规则等。它与存储过程的差别是触发器不能运行EXCUTE语句调用,而是在用户运行Transact_SQL语句是自己主动触发运行。

  2、分类

SQL Sever包含三种常规类型的触发器:

1)DML触发器(经常使用)

假设我们对某个表谢了相应的DML触发器,当数据库表中的数据发生相应的变化时(insert,delete,update),该触发器自己主动运行。其主要作用是强制运行业务规则,扩展SQL sever 约束、默认值等。

可分为:

a、AFTER 触发器

包含insert触发器、update触发器和delete触发器,在这些操作运行后触发器才干触发,且仅仅能定义在表上。

b、INSTEAD OF 触发器

并不运行定义的相关操作,而是仅运行触发器本身。instead of 触发器能够在表上定义,也能够在试图上定义。

2)DDL触发器

主要用于审核与规范数据库中表、触发器、视图等结构上的操作。在数据库结构发生变化时运行(改动和新增列、新增表等),主要用来记录数据库的改动过程,以及限制程序猿对数据库的改动。

  3)登录触发器

响应LOGIN时间而激发的存储过程。登录触发器在登录的身份验证阶段完毕之后切用户会话实际建立之前激发。假设身份验证失败,将不激发登录触发器。

3、作用

a、同意/限制对表的改动
      b、自己主动派生列,如自增字段
      c、强制数据的一致性
      d、提供审计和日志记录
      e 、防止无效的事务处理

  4、实例应用

为了在实践中熟悉触发器,在机房收费注冊功能中应用了触发器。以此展示触发器的创建过程。

由插入INSERT学生信息表的数据触发此触发器,进行注冊表和充值表的记录的插入操作,详细例如以下:

1)在T_StuInfo表下建立触发器

2)编写语句

USE [JF_sys]
GO
/****** Object:  Trigger [dbo].[Register]    Script Date: 2014/8/11 21:06:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[Register]        --创建触发器ON  [dbo].[T_StuInfo]AFTER insert
AS declare @CardID VARCHAR(10),       --參数@StuID VARCHAR(10),@RegDate varchar(10),@RegTime varchar(10),@UserID varchar(10),@RegCash varchar(15),@CheckStatus varchar(10)select @CardID=CardID ,@UserID =UserID from insertedselect @RegCash =StuCash from insertedselect @StuID=StuID from insertedset @RegDate =CONVERT (varchar (10),GETDATE (),120)   --获取日期set @RegTime =CONVERT (varchar (10),GETDATE (),108)   --获取时间BEGIN--引发操作:向注冊表和充值表中插入数据insert into T_RegInfo (CardID ,StuID ,RegDate ,RegTime ,UserID ,RegCash ,CheckStatus ) values (@CardID , @StuID,@RegDate,@RegTime,@UserID,@RegCash,'未结账')insert into T_RechargeInfo (CardID,RecDate,RecTime,RecCash,UserID,CheckStatus ) VALUES (@CardID ,@RegDate ,@RegTime ,@RegCash,@UserID,'未结账')
END

对新知识的应用可能存在欠缺,如有不恰当的地方,欢迎大家指出!

机房重构(4)——触发器的使用相关推荐

  1. 机房重构---准备阶段总结

    三层项目结束有段时间了,由于最近把大把大把的精力放到了自考上,机房重构只是停留在了准备的阶段,下面是我在准备阶段对"机房重构"的一些自我认识. 刚开始的时候非常迷茫,现在仍然很迷茫 ...

  2. 机房重构(个人版)——类图

    我觉得机房重构的正确顺序是:数据库.绘图(包图.类图.时序图).文档最后是代码的实现.只是,尽管我这么觉得,却没有全然依照这个进行.我觉得.计划和顺序是死的.人是活的.假设进行到某一步.你进行不下去了 ...

  3. 配置文件总结(机房重构知识点总结)

    在这次机房重构中,第一次用了配置文件,把数据库的链接字串放在了配置文件中.和VB6.0版相比.不用又一次编译软件,就可以实现数据库的变更,确实方便了非常多. 直到想要总结配置文件才发现,自己对配置文件 ...

  4. C#机房重构-总结(三)

    一,字符的限制 这个是两种限制,其实都是根据ascii码来写的,给大家加推荐一个博客,可以去了解一下更深层次的. C#输入字符限制:https://blog.csdn.net/u014067842/a ...

  5. 个人机房重构--七层实现登录

    一.概述: 现在准备开始个人机房重构,那么就从简单的来,先用七层实现登录.我们常说的七层是指哪七层呢?其实七层就是在三层的基础上,添加了外观层--设计模式的外观模式,抽象工厂加反射,接口层.外观层主要 ...

  6. 【机房重构】一步一步往上爬——验收给了我什么

    整个机房重构过程中,一共经历了两次验收.一次是关于系统编程:一次是关于画图与文档,每一次,师父都是耐心.细心地指导.要问验收给了我什么,看下面的博客内容便清楚了.个人机房重构可分为两个阶段,前期主要是 ...

  7. 机房重构 之 抽象工厂+反射+配置文件 实现数据库訪问

    重构机房已经開始三个多星期了,从刚開始的一头雾水,到如今的柳暗花明,由開始的无从下手,到如今感觉犹 如脱胎换骨了般.和两个星期前相比.如今明朗了多了,心情也好了不少. 先给大家看一下这次重构的总体架构 ...

  8. 【机房重构】组合查询--存储过程

    定义 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参 ...

  9. 【机房重构】C#子窗体关闭父窗体

    [机房重构]-----[修改密码] 最原始我的修改密码是用户在修改密码之后仍然处于登录状态,自己想想其实也挺对的,为啥用户修改密码了就必须要重新登录? 应该有很多人和我有同样的想法. 但是经过和其他人 ...

  10. 【机房重构】-UNL图回顾

    前言 欠的迟早是要还的,UML图至从学过之后,就几乎没有复习过,到现在,几种关系,各种图的作用以及区别,都已经很模糊,这次正好结合重构,做一下回顾. UML 是什么? 统一建模语言,可视化的面向对象建 ...

最新文章

  1. 各领域机器学习数据集汇总
  2. RS232接口是如何工作的?
  3. Network UVA - 315(Tarjan+连通性问题:求割点)
  4. 树莓派3显示服务器SSH拒绝了密码,脚本封杀尝试树莓派SSH密码的来源IP
  5. 【牛客 - 551C】CSL 的密码(后缀数组,后缀自动机,随机算法)
  6. 数据仓库 和挖掘的步骤 - oracle
  7. 华为鸿蒙系统议论文素材,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  8. Fefora17联想笔记本安装无线网卡
  9. CodeForces - 1610B Kalindrome Array
  10. C# Thread多线程学习
  11. flashback query闪回数据
  12. ORACLE数据库日志路径在哪里,查询方式
  13. xmpp服务器linux,Prosody搭建xmpp服务器
  14. 浅谈企业网站建设注意事项
  15. 拼音打字时不定时出现重复字母
  16. 《Linux那些事儿之我是USB》我是U盘(14)冰冻三尺非一日之寒
  17. 可汗学院公开课:金融学笔记
  18. 如何实现验证码输入正确与否的判断?
  19. 11.1-4日,RTE2022 第八届实时互联网大会邀您“聚享万象”,线上报名开启
  20. springboot+vue+elementUI搭建个人博客

热门文章

  1. ARMv8-A Generic Interrupt Controller(GIC)
  2. linux根文件系统的挂载过程详解
  3. 从海康7816的ps流里获取数据h264数据
  4. linux内核相关的两个问题
  5. python中md5方法返回值_python中的md5加密
  6. python正则表达式面试题,带有utf8问题的python正则表达式
  7. 土壤重金属含量分布、Cd镉含量、Cr、Pb、Cu、Zn、As和Hg、土壤采样点、土壤类型分布
  8. c++sizeof求类大小 sizeof与strlen对比
  9. pandas读取与存储操作详解
  10. 【图论】Bellman_Ford算法求有步数限制的最短路(图文详解)