触发器

  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. Jquery+Json+Handler文件结合应用实例

    1.页面script代码-[model数据.字符串] <script type="text/javascript" charset="utf-8" src ...

  2. javaWeb之邮箱发送(邮箱客户端配置)

    这里使用的是本机的邮箱服务器  , 代码执行条件: 1.·邮箱服务器  , 下载地址   密码   s4xn 邮箱服务器配置: 1):安装 2):打开服务器 红色部分是默认账号,不用处理 3)系统设置 ...

  3. 芝麻HTTP: Python爬虫入门之Urllib库的高级用法

    1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览 ...

  4. boost asio allocation

    allocation演示了自定义异步操作的内存分配策略,因为asio在执行异步IO操作时会使用系统函数来动态分配内存,使用完后便立即释放掉:在IO操作密集的应用中,这种内存动态分配策略会较大地影响程序 ...

  5. 洛谷U19464 山村游历(Wander)(LCT,Splay)

    洛谷题目传送门 LCT维护子树信息常见套路详见我的总结 闲话 题目摘自WC模拟试题(by Philipsweng),原题目名Wander,"山村游历"是自己搞出来的中文名. 数据自 ...

  6. 【BZOJ3626】LCA(树链剖分,Link-Cut Tree)

    [BZOJ3626]LCA(树链剖分,Link-Cut Tree) 题面 Description 给出一个n个节点的有根树(编号为0到n-1,根节点为0).一个点的深度定义为这个节点到根的距离+1. ...

  7. Bzoj1901 Dynamic Ranking

    动态区间第k小 离散化后 那么每个点开一棵线段树(主席树)再套一个树状数组在外面 每次询问区间内的树的个数时 相当于进行了一次树状数组求区间和的操作,只是是把树状数组那个点看做主席树,对log棵主席树 ...

  8. php 目录处理函数

    之前我们处理的全都是文件,那目录和文件夹怎么处理呢? 我们就来学习目录或者称为文件夹的处理相关函数. 处理文件夹的基本思想如下: 1.读取某个路径的时候判断是否是文件夹 2.是文件夹的话,打开指定文件 ...

  9. Several ports (8005, 8080, 8009)被占用

    启动Tomcat服务器报错: Several ports (8005, 8080, 8009) required by Tomcat v5.5 Server at localhost are alre ...

  10. 画一个DIV并给它的四个角变成圆形,且加上阴影

    <!doctype html><html><head><meta charset="utf-8"><title>无标题文 ...