SQL数据库之触发器.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8.3.1、触发器的概念 2、触发器的用途及优点 l 实现数据库中多个表的级联修改:当修改删除某张表的数据时,其他表的相应数据能自动修改或删除,以保证数据的一致性(也可在设置外键约束时设置相应的选项,而且效率更高)。 l?检查数据输入的正确性:CHECK约束在限制数据输入时不能参照其他表中的数据。如销售金额=数量*单价的自动计算、销售数量不允许超过库存量等,用CHECK约束是无法实现的,用触发器即可实现比CHECK更复杂的约束检查。 l 检查数据修改的正确性:综合以上两种情况,当对表中受触发器保护的数据修改时,触发器不但会自动更新其他表与其相关的数据,还可以自动检查这些数据,只要有一个不符合条件,则修改数据失败。 3、触发器的触发方式 为数据表中某个字段设置触发器后,当该字段的数据被INSERT插入、DELETE删除、UPDATE修改更新时,触发器便被激活并自动执行。 SQL Server按触发器被激活的时机可分为“后触发”和“替代触发”两种触发方式。 (1)后触发 若引发触发器执行的语句通过了各种约束检查,成功执行后才激活并执行触发器程序,这种触发方式称为“后触发”。后触发的特点: l 若引发触发器执行的语句违反了某种约束,该语句不会执行,则后触发方式的触发器也不被激活。 l 后触发方式只能创建在数据表上,不能创建在视图上。 l?一个表可以有多个后触发触发器。 3、触发器的触发方式 (2)替代触发 若激活触发器的语句仅仅起到激活触发器的作用,一旦激活触发器后该语句即停止执行,立即转去执行触发器的程序—激活触发器的语句并不被执行,相当于禁止某种操作。这种触发方式称为“替代触发”。 替代触发的特点: l?替代触发可以创建在表上,也可以创建在视图上。 l?一个表只能有一个替代触发的触发器。 4、触发器使用的inserted临时表和deleted临时表 l 不论后触发或替代触发,每个触发器被激活时,系统都自动为它们创建两个临时表:inserted和deleted表。 l 两个表的结构与激活触发器的原数据表结构相同。 l 用INSERT语句插入记录激活触发器时,系统在原表插入记录的同时,也自动把记录插入到inserted临时表。 l 用SELECT语句删除记录激活触发器时,系统在原表删除记录的同时,会把删除的记录添加到deleted临时表。 l 用UPDATE语句修改数据激活触发器时,系统先在原表删除原有记录,删除的记录被添加到deleted临时表,然后再插入新记录,并同时插入到inserted临时表。 l 用户可以用SELECT语句查询这两个临时表,但不允许进行修改。 l 触发器一旦执行完成,这两个表将被自动删除。 8.3.2、用CREATE TRIGGER语句创建触发器 语法格式: CREATE TRIGGER [拥有者.]触发器名 ON [拥有者.]{ 表名|视图名 } {for|after|instead of}[insert,update,delete] [WITH encryption] [ NOT FOR replication ] AS [SET NOCOUNT] -- 不返回给变量赋值的结果 SQL语句系列 [ROLLBACK TRANSACTION] -- 事务回滚 l ON {表名|视图名}:指定激活触发器被操作的表或视图。 l for与 after:指定所创建的触发器为后触发方式,for与 after完全相同,for是为了与以前老版本兼容而保留。 l instead of:指定所创建的触发器为替代触发方式。 l insert,update,delete:指定激活该触发器的具体操作,可以指定一项,也可三项同时指定,但必须以逗号隔开。 8.3.2、用CREATE TRIGGER语句创建触发器 l?WITH encryption:指定对触发器文本加密,禁止查阅修改。 l?NOT FOR replication:指定在复制过程中不激活触发器操作。 l SET NOCOUNT:触发器一般不能有返回值,所以也不应有SELECT语句进行查询或给变量赋值(获得被操作数据的语句除外),如果必须使用变量赋值语句,可在开头使用该语句避免返回结果。 lSQL语句系列:即触发器被指定操作激活后要执行的SQL代码,其中可包含获得被操作数据的SELECT语句: n 后触发方式被操作数据一定在inserted或deleted临时表中。 n 如果被操作的数据是多值的,可用IN判断是否被包含在其中: 被操作数据 IN (SELECT 被操作字段 FROM 临时表) n 如果被操作的数据是单值的,可用以下语句获得: SELECT

文档评论(0)

微微 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档