网站大量收购闲置独家精品文档,联系QQ:2885784924

第十章 触发器.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章 触发器

* 触发器定义在特定的表上,与表相关 自动触发执行 不能直接调用 是一个事务(可回滚) 什么是触发器 3-3 * 触发器的类型 DELETE 触发器 INSERT 触发器 UPDATE 触发器 * 触发器触发时: 系统自动在内存中创建deleted表或inserted表 只读,不允许修改;触发器执行完成后,自动删除 inserted 表 临时保存了插入或更新后的记录行 可以从inserted表中检查插入的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作 deleted 表 临时保存了删除或更新前的记录行 可以从deleted表中检查被删除的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作 inserted 和deleted 表2-1 * inserted 和deleted 表2-2 修改操作 inserted表 deleted表 增加(INSERT)记录 存放新增的记录 ------ 删除(DELETE)记录 ----- 存放被删除的记录 修改(UPDATE)记录 存放更新后的记录 存放更新前的记录 inserted表和deleted表存放的信息 * 创建触发器的语法: 如何创建触发器 CREATE TRIGGER trigger_name ON table_name [WITH ENCRYPTION] FOR [DELETE, INSERT, UPDATE] AS T-SQL语句 GO WITH ENCRYPTION表示加密触发器定义的SQL文本 DELETE, INSERT, UPDATE指定触发器的类型 * INSERT触发器 transInfo cardID transType transMoney 1001 0002 1001 0002 存入 300 存入 500 inserted cardID transType transMoney 1001 0001 支取 200 transInfo cardID transType transMoney 1001 0002 1001 0002 存入 300 存入 500 1001 0001 支取 200 插入记录行 触发insert触发器。向inserted表中插入新行的副本 触发器检查inserted表中插入的新行数据,确定是否需要回滚或执行其他操作 INSERT触发器的工作原理: * INSERT 触发器示例 3-1 问题: 解决上述的银行取款问题:当向交易信息表(transInfo)中插入一条交易信息时,我们应自动更新对应帐户的余额。 分析: 在交易信息表上创建INSERT触发器 从inserted临时表中获取插入的数据行 根据交易类型(transType)字段的值是存入/支取, 增加/减少对应帐户的余额。 * -------关键代码------ CREATE TRIGGER trig_transInfo ON transInfo FOR INSERT AS DECLARE @type char(4),@outMoney MONEY, @myCardID char(10),@balance MONEY SELECT @type=transType,@outMoney=transMoney, @myCardID=cardID FROM inserted IF (@type=支取) UPDATE bank SET currentMoney=currentMoney-@outMoney WHERE cardID=@myCardID ELSE UPDATE bank SET currentMoney=currentMoney+@outMoney WHERE cardID=@myCardID ….. GO INSERT 触发器示例 3-2 从inserted表中获取交易类型、交易金额等 根据交易类型,减少或增加对应卡号的余额 * INSERT 触发器示例 3-3 * transInfo cardID transType transMoney 1001 0002 1001 0002 存入    300 存入   500 1001 0001 支取 200 DELETE触发器 transI

文档评论(0)

2232文档 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档