- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
触发器可以做很多事情,但也会带来很多问题。使用它的技巧在于在适当的时候使用,而不要在不适当的时候使用它们。
触发器的一些常见用途如下:
弹性参照完整性:实现很多DRI不能实现的操作(例如,跨数据库或服务器的参照完整性以及很多复杂的关系类型)。
创建神级跟踪:这意味写出的记录不仅跟踪大多数当前的数据,还包括对每个记录进行实际修改的历史数据。随着SQL Server2008中的更改数据跟踪功能的出现,创建审计跟踪不再那么流行,但以前使用的就是触发器。
执行与CHECK约束类似的功能,但是跨表,跨数据库甚至是跨服务器使用。
用自己的语句代替用户的操作语句。
一、触发器的概念
触发器是一种特殊类型的存储过程,对特定事件作出相应。触发器有两种类型:数据定义语言(DDL)触发器和数据操纵语言(DML)触发器。
DDL触发器在用户以某些方式(CREATE、ALTER、DROP或相似的语句)对数据库结构进行修改时激活作出响应。一般来说,只会在对数据库结构的改变或历史进行极为严格的审计时才会用到DDL触发器。
DML触发器是一些附加在特定表或视图上的代码片段。与需要显式调用代码的存储过程不同,只要有附加触发器的时间在表中发生,触发器中的代码就会自动运行。实际上也不能显式地调用触发器-唯一的做法是在指定的表中执行所需的操作。
除了不能够显式地调用触发器,还可在存储过程中发现另外两个触发器所没有的内容:参数和返回码。
可将触发器附加到什么事件呢?因为在SQL中可以使用3类动作查询,所以就有3种类型的触发器,另外加上混合搭配这些时间并对时间定时激活的混合触发器类型。
INSERT触发器
DELETE触发器
UPDATE触发器
以后任意类型的混合
注意:
值得注意的是,有时即使执行的动作是前面这些类型中的一种,触发器也不会激活。问题在于进行的操作是否在记录的活动中。例如,DELETE语句是一个正常的记录活动,它会激活任何删除触发器,而TRUNCATE TABLE也有删除行的作用,但只是把表使用的空间释放而已-没有记录单个行删除操作,所以没有激活任何触发器。批量操作默认情况下不激活触发器,需要显式告知批量操作激活触发器。
创建触发器的语法:
CREATE TRIGGER trigger name
ON [ schema name. ]table or view name
[WITH ENCRYPTION | EXECUTE AS CALLER | SELF | user ]
{{{ FOR | AFTER} [DELETE][,][INSERT][,][UPDATE] } | INSTEAD OF }[WITH APPEND][NOT FOR REPLICATION]
AS
sql statements | EXTERNAL NAME assembly method specifier
ON子句用来之处触发器将要附加的表,以及在何时何种情况下激活这个触发器。
1、ON子句
这部分只是对创建触发器所针对的对象进行命名。记住,如果触发器的类型是AFTER触发器(使用FOR或AFTER来声明触发器),那么ON子句的目标就必须是一个表-AFTER触发器不支持视图。
2、WITH ENCRYPTION选项
加密触发器。如果添加了这个选项,则可以确保没有人能够查看你的代码(甚至是你自己)。和视图与存储过程一样,使用WITH ENCRYPTION选项需要记住的是,每次在触发器上使用ALTER语句时都必须重新应用该选项,如果使用ALTER STATEMENT语句但不包含WITH ENCRYPTION选项,那么触发器就不再被加密。
3、FOR|AFTER子句与INSTEAD OF子句
除了要确定激活触发器(INSERT、UPDATE、DELETE)的查询类型以外,还要对触发器的激活时间做出选择。虽然人们经常考虑使用FOR触发器,但是也可以使用INSTEAD OF触发器。对着两个触发器的选择将会影响到是在修改数据之前还是之后进入触发器。FOR和AFTER的意义是一样的。
FOR|AFTER
FOR(或者AFTER)子句表明了期望触发器在何种动作类型下激活。当有INSERT、UPDATE或DELETE或三者混合操作时,都可以激活触发器。
FOR INSERT,DELETE
--或者是:
FOR UPDATE,INSERT
--或者是:
FOR DELETE
1、INSERT触发器
当有人向表中插入新的一行时,被标记为FOR INSERT的触发器的代码就会执行。对于插入的每一行来说,SQL Server会创建一个新行的副本并把该副本插入到一个特殊
您可能关注的文档
最近下载
- 2025湖北武汉市汉阳区招聘社区干事40人备考试题及答案解析.docx VIP
- 新能源汽车试题库(附答案).docx VIP
- 《碳纤维片材加固混凝土结构技术规程》(2022年版).pdf VIP
- 2023年地面及屋面分布式光伏发电工程HSE作业指导书(最终版).docx VIP
- 常用塑料特性及塑料成型工艺.pdf VIP
- 甲烷安全技术说明书MSDS.pdf VIP
- 统编版语文四年级上册第五单元素养评估(含答案).docx VIP
- 入党志愿书电子版模板(空白) .doc VIP
- 五年级下册生字练字帖硬笔书法.pdf VIP
- 《国有企业管理人员处分条例》考试题库200题(含答案).docx VIP
文档评论(0)