- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 触发器的工作原理 Microsoft SQL Server 2000系统提供了3种类型的触发器,即INSERT类型、UPDATE类型和DELETE类型。 当向表中插入数据时,INSERT触发器触发执行。当INSERT触发器触发时,新的记录增加到触发器表中和inserted表中。该inserted表是一个逻辑表,保存了所插入记录的拷贝,允许用户参考INSERT语句中数据。触发器可以检查inserted表,来确定该触发器的操作是否应该执行和如何执行。在inserted表中的那些记录,总是触发器表中一行或多行记录的冗余。 当触发一个DELETE触发器时,被删除的记录放在一个特殊的deleted表中。deleted表是一个逻辑表,用来保存已经从表中删除的记录。该deleted表允许参考原来的DELETE语句删除的已经记录在日志中的数据。 修改一条记录就等于插入一条新记录和删除一条旧记录。同样,UPDATE语句也可以看成是由删除一条记录的DELETE语句和增加一条记录的INSERT语句组成。当在某一个有UPDATE触发器表的上面修改一条记录时,表中原来的记录移动到deleted表中,修改过的记录插入到了inserted表中。触发器可以检查deleted表和inserted表以及被修改的表,以便确定是否修改了多个行和应该如何执行触发器的操作。 * * 执行触发器时,系统创建了两个特殊的逻辑表:inserted表和deleted表。它们由系统来维护,用户不能对其进行修改。它们存在于内存中而不是数据库中。这两个表的结构总是与被触发器作用的表的结构相同。触发器执行完成后,与该触发器相关的这两个表也会被删除。 inserted逻辑表:存放由于执行INSERT或UPDATE语句而要从表中插入的所有行。在执行INSERT或UPDATE操作时,新的行同时添加到激活触发器的表中和inserted表中,inserted表的内容是激活触发器的表中新行的拷贝。 deleted逻辑表:存放由于执行DELETE或UPDATE语句而要从表中删除的所有行。在执行DELETE或UPDATE操作时,被删除的行从激活触发器的表中被移动到deleted表中,这两个表(DELETE 表和触发器表不会有共同的行。 触发器中使用的特殊表 * * 对具有触发器的表(触发器表)进行操作时,其操作过程为: ◆执行INSERT操作插入到触发器表中的新行被插入到inserted表中。 ◆执行DELETE操作从触发器表中删除的行被插入到deleted表中。 ◆执行UPDATE操作先从触发器表中删除旧行,然后再插入新行。其中,被删除的旧行被插入到deleted表中,插入的新行被插入到inserted表中。 deleted表和inserted表都是针对当前触发器的局部临时表,这些表只对应于当前触发器的基本表。如果在触发器中使用了存储过程,或是产生了嵌套触发器的情况,则不同的触发器将会使用属于自己基本表的deleted和inserted临时表。 * * 触发器触发时 系统自动在内存中创建deleted表或inserted表 只读,不允许修改;触发器执行完成后,自动删除 inserted 表 临时保存了插入或更新后的记录行 可以从inserted表中检查插入的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作 deleted 表 临时保存了删除或更新前的记录行 可以从deleted表中检查被删除的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作 小结: inserted 和deleted 表 * * 修改操作 inserted表 deleted表 增加(INSERT)记录 存放新增的记录 ------ 删除(DELETE)记录 ----- 存放被删除的记录 修改(UPDATE)记录 存放更新后的记录 存放更新前的记录 表 inserted表和deleted表存放的信息 * * CREATE TABLE table1(c1 int ,c2 char(30)) GO CREATE TRIGGER tr_table1 ON table1 FOR insert, update, delete AS PRINT inserted表: SELECT * FROM inserted PRINT deleted表: SELECT * FROM deleted GO 执行: INSERT table1
文档评论(0)