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

SQLServer2008触发器学习笔记.doc

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

触发器 一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。 二﹕ SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表。这两个表由系统来维护﹐它们存在于内存中而不是在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。触发器执行 完成后﹐与该触发器相关的这两个表也被删除。 Deleted表存放由于执行Delete或Update语句而要从表中删除的所有行。 Inserted表存放由于执行Insert或Update语句而要向表中插入的所有行。 三﹕Instead of 和 After触发器 SQL Server提供了两种触发器﹕Instead of 和After 触发器。 这两种触发器的差别在于他们被激活的操作﹕ Instead of触发器用于替代引起触发器执行的T-SQL语句。除表之外﹐Instead of 触发器也可以用于视图﹐用来扩展视图可以支持的更新操作。 After触发器在一个Insert,Update或Deleted语句之后执行﹐进行约束检查等动作都在After触发器被激活之前发生。After触发器只能用于表。一个表或视图的每一个修改动作(insert,update和delete)都可以有一个instead of 触发器﹐一个表的每个修改动作都可以有多个After触发器。 INSTEAD OF触发器被用于更新那些没有办法通过正常方式更新的视图。通常不能在一个基于连接的视图上进行DELETE操作,可以编写一个INSTEAD OF DELETE触发器来实现删除。可以访问那些如果视图是一个真正的表时已经被删除的数据行,它将把删除的行存储在deleted临时表中。? 本次练习将通过具体的例子介绍如何使用INSTEAD?OF触发器,使读者掌握INSTEAD OF触发器的使用方法。 向student表中插入数据时,检查学号是否存在于student表中,如存在则进行插入操作,否则就不插入,具体语句如下所示:? CREATE TRIGGER [checkid] ON dbo.student INSTEAD OF insert AS IF NOT EXISTS(SELECT * FROM dbo.student WHERE?ID=(SELECT?ID?FROM?INSERTED)) BEGIN ROLLBACK TRANSACTION PRINT?要处理记录的学号不存在! END???? ELSE BEGIN INSERT NTO dbo.student select * from inserted PRINT 已经成功处理记录! END 执行以上代码后,然后,输入以下代码进行测试,代码如下:? INSERT INTO dbo.student VALUES(6,史琳达,女,20,006) 四﹕触发器的执行过程 如果一个Insert﹑update或者delete语句违反了约束﹐那幺After触发器不会执行﹐因为对约束的检查是在After触发器被激动之前发生的。所以After触发器不能超越约束。 Instead of 触发器可以取代激发它的操作来执行。它在Inserted表和Deleted表刚刚建立﹐其它任何操作还没有发生时被执行。因为Instead of 触发器在约束之前执行﹐所以它可以对约束进行一些预处理。 五﹕使用T-SQL语句来创建触发器 基本语句如下﹕ create trigger trigger_name on {table_name | view_name} {for | After | Instead of }[ insert, update,delete ] as sql_statement 六﹕删除触发器: 基本语句如下﹕ drop trigger trigger_name 七:查看数据库中已有触发器: -- 查看数据库已有触发器 use jxcSoftware go select * from sysobjects where xtype=TR -- 查看单个触发器 exec sp_helptext 触发器名 八﹕修改触发器: 基本语句如下﹕ alter trigger trigger_name on {tabl

文档评论(0)

fds373ix + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档