触发器

  1. 触发器是在对表进行插入、更新、删除操作时自动执行的存储过程,常用于强制业务规则,是一种高级约束,可以定义比用check约束更为复杂的约束。可以执行复杂的SQL语句(if/while/case)
  2. 触发器可以定义在特定的表上,与表相关
  3. 自动触发执行
  4. 不能直接调用
  5. 是一个事务(可以回滚)
  6. 触发器的类型

(1) DELETE触发器

(2) INSERT触发器

(3) UPDATE触发器

  1. inserted表和deleted表

触发器触发时:

系统自动在内存中创建deleted表或inserted表

Deleted表和inserted表都是只读的,不允许修改;触发器执行完成后自动删除

Inserted表

临时保存了删除或更新前的记录行

可以从inserted表中检查插入的数据是否满足业务需求

如果不满足,则向用户报告错误消息,并回滚插入操作

Deleted表

临时保存了删除或更新前的记录行

可以从delered表中检查被删除的数据是否满足业务需求

如果不满足,则向用户报告错误消息,并回滚删除操作

注意:在执行insert操作时,先创建inserted表,将插入的语句放到inserted表中,判断插入语句是否是否符合业务需求,如果不满足就向用户保存错误消息,并回滚插入操作,如果满足则执行成功.

执行deleted操作时,先创建deleted表,将删除的语句放到deleted表中,判断删除的语句是否符合业务需求,如果不满足就想用户报告错误信息,并回滚删除操作,如果满足则执行成功

执行update操作时,先创建inserted表和deleted表,将要修改的表中数据加入deleted表中,

然后将修改后的数据放入inserted表中,判断语句是否符合业务需求,如果不满足就向用户保存错误消息,并回滚插入操作,如果满足则执行成功.

修改操作

inserted表

deleted表

增加(INSERT)记录

存放新增的记录

------

删除(DELETE)记录

-----

存放被删除的记录

修改(UPDATE)记录

存放更新后的记录

存放更新前的记录

总结为表如下:

  1. 创建触发器

语法:

Create trigger 触发器名称

On 表名

[with encryption]

For[delete/insert/update]

As

T-SQL语句

GO

[with encryption]表示加密触发器定义的SQL文本

[delete/insert/update]指定触发器的类型

9.insert触发器的使用:

--当向交易信息表(transInfo)中插入一条交易信息时,

--我们应自动更新对应帐户的余额

  1. DELETE触发器的使用:

当删除交易信息表时,要求自动备份被删除的数据到表backupTable中 。

  1. UPDATE触发器的使用

11.UPDATE触发器除了跟踪数据的变化(修改)外,还可以检查是否修改了某列的数据

使用UPDATE(列)函数检测是否修改了某列

问题:

交易日期一般由系统自动产生,默认为当前日期。为了安全

起见,一般禁止修改,以防舞弊。

触发器还是一个特殊的事务单元,当出现错误时,可以执行ROLLBACK TRANSACTION回滚撤销操作

触发器一般都需要使用临时表:deleted表和inserted表,它们存放了被删除或插入的记录行副本

C#触发器知识总结及案例的更多相关文章

  1. 微信小程序知识总结及案例集锦

    微信小程序知识总结及案例集锦 微信小程序的发展会和微信公众号一样,在某个时间点爆发 学习路径 微信小程序最好的教程肯定是官方的文档啦,点击这里直达 微信官方文档 认真跟着文档看一遍,相信有vue前端经 ...

  2. Java(19)接口知识及综合案例

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201629.html 博客主页:https://www.cnblogs.com/testero ...

  3. sql触发器知识

    触发器中的Inserted和deleted临时表: SQL2000中,inserted表和deleted表用于存放对表中数据行的修改信息.他们是触发器执行时自动创建的,放在内存中,是临时表.当触发器工 ...

  4. HBase核心知识和应用案例

    Hbase 热点问题? Hbase 预分区 Hbase Rowkey 设计原则 Hbase 常见避免热点问题方法 Hbase 总结 Hbase 连续查询的Rowkey设计 Hbase 随机查询的Row ...

  5. Oracle学习【索引及触发器】

    索引B_Tree结构 请参照 响应图例 索引是一种允许直接访问数据表中某一数据行的树形结构,为了提高查询效率而引入,是独立于表的对象,可以存放在与表不同的表空间中.索引记录中存有索引关键字和指向表中数 ...

  6. 微软BI SSRS 2012 Metro UI Win 8 风格的报表课程案例全展示

    开篇介绍 微软BI SSRS 2012 Metro UI 高端报表视频教程 (http://www.hellobi.com/course/15)课程从2014年6月开始准备,于2014年9月在 天善B ...

  7. 【SQL SERVER】触发器(一)

    下面是个人对触发器知识的整理,触发器其实很简单,但想要编写发杂的触发器操作还是需要一定的SQL语句编写,触发器主要用于SQL SERVER约束.默认值和规则的完整性检查,还可以实现由主键和外键不能保证 ...

  8. LINQ查询知识总结

    -------适合自己的才是最好的!!! LINQ查询知识总结:案例分析 案例:汽车表car,系列表brand,厂商表productor private MyCarDataContext  _Cont ...

  9. quartz2.3.0(二)触发器Trigger花式Scheduler调度job

    任务类 package org.quartz.examples.example2; import java.util.Date; import org.slf4j.Logger; import org ...

随机推荐

  1. 芝麻HTTP:Python爬虫入门之Cookie的使用

    为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓 ...

  2. 关于swiper的滚动条滑动

    <div class="swiper-container2"> <div class="swiper-wrapper"> <div ...

  3. spring mvc和swagger整合

    pom.xml 导入jar jar包 所属 备注 spring-core spring spring核心包 spring-expression spring spEl表达式 spring-beans ...

  4. [SCOI2010]股票交易

    题目大意: 网址:https://www.luogu.org/problemnew/show/P2569 大意:在接下来的T天中,每天股票有一个买入价格Api与卖出价格Bpi. 同时,每天买入股票数与 ...

  5. [Lugu3380]【模板】二逼平衡树(树套树)

    题面戳我 您需要写一种数据结构来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排名 2.查询区间内排名为k的值 3.修改某一位值上的数值 4.查询k在区间内的前驱(前驱定义为严格小于x ...

  6. UOJ207:共价大爷游长沙

    题面 UOJ Sol 神题 给每个点对随机一个权值,把这两个点的权值异或上这个随机的值 用\(LCT\)维护子树信息,若子树异或和为所有点对的异或和那么就是答案 大常数代码 # include < ...

  7. Redis进阶实践之十七 Redis协议的规范

    一.介绍            Redis客户端使用称为RESP(Redis的序列化协议)的协议与Redis服务器进行通信. 虽然协议是专门为Redis设计的,但它可以用于其他客户端 - 服务器软件项 ...

  8. Zabbix 监控 Docker容器

    我们可以通过Python提供的模块docker来取各个docker容器的监控参数.参考文档:http://docker-py.readthedocs.io/en/stable/containers.h ...

  9. gulp详细入门

    gulp是基于Nodejs的自动任务运行器, 她能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的的测试.检查.合并.压缩.格式化.浏览器自 ...

  10. gulp配置

    /* gulp配置 */ /* gulp配置 */ var gulp = require('gulp'), concat = require('gulp-concat'), rename = requ ...