- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
9章触发器ppt课件
第九章 触发器 回顾 2-1 代码阅读,下列系统存储过程的功能是: EXEC sp_helpconstraint employees EXEC sp_helpindex goods EXEC sp_renamedb ‘employees,‘emp‘ EXEC xp_cmdshell ‘mkdir d:\project’ 存储过程的参数分为哪两类? 根据您的理解,print语句和RAISERROR语句有什么区别 回顾 2-2 代码阅读:指出下列语句的错误 CREATE PROCEDURE proc_stuInfo --定义存储过程 @stuName VARCHAR(10), @m INT OUTPUT, @stuAge=18 INT AS .....代码略 GO --调用存储过程 DECLARE @s INT EXEC proc_stuInfo 张三,@s,30 EXEC proc_stuInfo 张三,@s EXEC proc_stuInfo @stuAge=22,@stuName=李四,@m=@s OUTPUT 本章目标 了解为什么需要触发器 理解触发器的工作原理 掌握如何使用inserted表和deleted表 掌握如何创建: INSERT触发器 UPDATE触发器 DELETE触发器 9.1.1 触发器的概念 9.1.2 触发器的类型和触发操作 9.1.3 触发器的功能 9.2DML触发器的类型 DELETE 触发器 INSERT 触发器 UPDATE 触发器 INSERT触发器 课堂练习 为sell表创建一个insert触发器,要求:销售某种商品时,销售数量若超过进货数量,则取消这笔销售业务,否则,goods表中该商品进货数量自动减去销售数量。 代码如下: CREATE TRIGGER trig_sell ON sell FOR INSERT AS declare @s_number int,@g_number int,@goodid int select @s_number=数量,@goodid=商品编号from inserted select @g_number=数量 from goods where 商品编号=@goodid if @s_number=@g_number update goods set 数量=数量-@s_number where 商品编号=@goodid else begin RAISERROR (数量不够,交易失败,16,1) ROLLBACK TRANSACTION End GO DELETE触发器 UPDATE触发器 -------关键代码------ CREATE TRIGGER trig_update_bank ON bank FOR UPDATE AS DECLARE @beforeMoney MONEY,@afterMoney MONEY SELECT @beforeMoney=currentMoney FROM deleted SELECT @afterMoney=currentMoney FROM inserted IF ABS(@afterMoney-@beforeMoney)20000 BEGIN print 交易金额:+convert(varchar(8), ABS(@afterMoney-@beforeMoney)) RAISERROR (每笔交易不能超过2万元,交易失败,16,1) ROLLBACK TRANSACTION END GO 从deleted表中获取交易前的余额,从inserted表中获取交易后的余额 UPDATE触发器 3-2 交易金额是否2万 回滚事务,撤销交易 UPDATE触发器 3-3 列级 UPDATE 触发器 3-1 UPDATE触发器除了跟踪数据的变化(修改)外,还可以检查是否修改了某列的数据 使用UPDATE(列)函数检测是否修改了某列 问题: 交易日期一般由系统自动产生,默认为当前日期。为了安全 起见,一般禁止修改,以防舞弊。 分析: UPDATE(列名)函数可以检测是否修改了某列 -------关键代码------ CREATE TRIGGER trig_update_transInfo ON
文档评论(0)