触发器中两个临时表详解_第1页
触发器中两个临时表详解_第2页
触发器中两个临时表详解_第3页
触发器中两个临时表详解_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、触发器作为一种特殊的存储过程,它基于一个表而创建,与表紧密相连,可以看 作是表的一部分,主要用来保证数据的完整性。在SQL Server中一张表可以有多个 触发器,用户可以针对delete, insert和update语句分别设置触发器,当用户进 行delete, insert和update等数据维护操作执行后,这些事先定义好的触发器对 象就会被“触发”,并按事先定义好的规则自动执行。在触发器的“触发”过程中, 有两个临时表inserted和deleted发生了作用。这两个特殊的临 时表inserted和 deleted,仅仅在触发器运行时存在,它们在某一特定时间和 某一特定表相关。一旦 某一

2、个触发器结束执行时,相应的在二个表内的数据都会 丢失。我们可以可以使用 这两个表精确地确定触发器的动作对数据表所做的修 改。这二个表在结构上与触发 表结构相同,它们可用于触发器的条件测试,但用 户不能直接更改它们的内容。此 外,在delete ' insert和update触发器中,禁止访问inserted和deleted表中 的text、nt ext和image数据类型列。因此,应先深入了解inserted和deleted 表的结构和内容,才能更好地了解inserted和deleted表所发挥的作用。我们以一个“教学”数据库为例,说明inserted和deleted表的结构、内容 和

3、所发挥的作用。假设该教学库有三个基本表,分别为“学生”、“课程”和“选 课 。学生(学生号char,姓名char (8),性别char (2),专业char (10)课程(课程号char (4),课程名char (20),课程学分int)选课(学生号char (7),课 程号char (4),成绩int)首先我们考察在insert操作后5 inserted和deleted表的结构、内容。为 此 我们建立一个针对insert操作的触发器5以反映inserted和deleted表的情 况。 Create trigger ini on 学生 for insert Asselect * from in

4、sertedselect * from deletedreturn在执行了 insert into学生(学生号,姓名,性别5专业)values ( *0600102'J张三,男,电子,)后,运行效果见下图。可至询一-U&W3TDCE7D39.缺华7P39V<1«3£国支也.一无一 三句区Iinsert imo学生 空型支江套.胜以否业J wduog JMMIOM/张三二* J至子毕生号1名性别专业1照OQ J 02氽三免电千学生号琥名性双号业口科格0 0©:001行.行I J列已可见insert操作后,Inserted表内包含了所有已插入到表

5、内的新记录,它 记 录了 insert对触发器所在的表的改动。而deleted表中的内容为空。其次我们考察在delete操作后5 inserted和deleted表的结构、内容。为 此我们建立一个针对delete操作的触发器,以反映inserted和deleted表的情 况。Create trigger del on 学生 for delete as select * from inserted select * from deleted return在执行了 delete from学生where姓名二”张三,后,运行效果见下图。可见delete操作后,deleted表内包含了所有被删除的记录

6、,它记录了 de lete对触发器所在的表的改动。而inserted表中的内容为空。最后我们考察在update操作后5 inserted和deleted表的结构、内容。为 此我们建立一个针对update操作的触发器,以反映inserted和deleted表的情 况。Create trigger upl on 学生 for update as select * from inserted select * from deleted return在执行了 update学生set性别二,女where姓名二“王明,后,运行效果见下图°彳恭询一-0M037KE7D3九铁学J-QA40*ME12

7、外AdMwuHrmQx 一无,一口打可见update操作后5 Inserted表内包含了 update操作所涉及的所有 记录修改后的值,deleted表内包含了 update操作所涉及的所有记录修改前的 值。它们记录了 update对触发器所在的表的改动。因此,在执行insert或update语句时,插入到触发表中的新行同时添加到ins erted表中。而执行delete和update语句时,从触发表中删除的行被插入到d eleted表中。执行update操作时,它先从表中删除旧行,然后再插入新行,其中 被删除的行插入到deleted表中,而插入的新行则被同时记录到inserted临时表 中°现将insert、delete和update三种情况下的Inser

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论