• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#触发器知识总结及案例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

触发器

  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表,它们存放了被删除或插入的记录行副本 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#学习之time控件和timer_tick事件-----转载发布时间:2022-07-10
下一篇:
C#在winform中调用系统控制台输出发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap