欢迎来到天天文库
浏览记录
ID:13349629
大小:105.00 KB
页数:4页
时间:2018-07-22
《触发器中两个临时表详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、触发器作为一种特殊的存储过程,它基于一个表而创建,与表紧密相连,可以看作是表的一部分,主要用来保证数据的完整性。在SQLServer中一张表可以有多个触发器,用户可以针对delete、insert和update语句分别设置触发器,当用户进行delete、insert和update等数据维护操作执行后,这些事先定义好的触发器对象就会被“触发”,并按事先定义好的规则自动执行。在触发器的“触发”过程中,有两个临时表inserted和deleted发生了作用。这两个特殊的临时表inserted和deleted,仅仅在触发器运行时存在,它们在某一特定时间和某一特定表相关。一旦某一个触发器结束执行时,
2、相应的在二个表内的数据都会丢失。我们可以可以使用这两个表精确地确定触发器的动作对数据表所做的修改。这二个表在结构上与触发表结构相同,它们可用于触发器的条件测试,但用户不能直接更改它们的内容。此外,在delete、insert和update触发器中,禁止访问inserted和deleted表中的text、ntext和image数据类型列。因此,应先深入了解inserted和deleted表的结构和内容,才能更好地了解inserted和deleted表所发挥的作用。我们以一个“教学”数据库为例,说明inserted和deleted表的结构、内容和所发挥的作用。假设该教学库有三个基本表,分别为“
3、学生”、“课程”和“选课”。学生(学生号char(7),姓名char(8),性别char(2),专业char(10))课程(课程号char(4),课程名char(20),课程学分int)选课(学生号char(7),课程号char(4),成绩int) 首先我们考察在insert操作后,inserted和deleted表的结构、内容。为此我们建立一个针对insert操作的触发器,以反映inserted和deleted表的情况。Createtriggerin1on学生forinsertAsselect*frominsertedselect*fromdeletedreturn在执行了insert
4、into学生(学生号,姓名,性别,专业)values(‘0600102’,‘张三’,‘男’,‘电子’)后,运行效果见下图。可见insert操作后,Inserted表内包含了所有已插入到表内的新记录,它记录了insert对触发器所在的表的改动。而deleted表中的内容为空。 其次我们考察在delete操作后,inserted和deleted表的结构、内容。为此我们建立一个针对delete操作的触发器,以反映inserted和deleted表的情况。Createtriggerde1on学生fordeleteasselect*frominsertedselect*fromdeletedret
5、urn在执行了deletefrom学生where姓名=‘张三’后,运行效果见下图。 可见delete操作后,deleted表内包含了所有被删除的记录,它记录了delete对触发器所在的表的改动。而inserted表中的内容为空。 最后我们考察在update操作后,inserted和deleted表的结构、内容。为此我们建立一个针对update操作的触发器,以反映inserted和deleted表的情况。Createtriggerup1on学生forupdateasselect*frominsertedselect*fromdeletedreturn在执行了update学生set性别=
6、’女where姓名=‘王明’后,运行效果见下图。 可见update操作后,Inserted表内包含了update操作所涉及的所有记录修改后的值,deleted表内包含了update操作所涉及的所有记录修改前的值。它们记录了update对触发器所在的表的改动。因此,在执行insert或update语句时,插入到触发表中的新行同时添加到inserted表中。而执行delete和update语句时,从触发表中删除的行被插入到deleted表中。执行update操作时,它先从表中删除旧行,然后再插入新行,其中被删除的行插入到deleted表中,而插入的新行则被同时记录到inserted临时表
7、中。现将insert、delete和update三种情况下的Inserted和deleted表的内容总结归纳如下。Inserted和deleted表的内容临时表Insert操作Delete操作Update操作Inserted所插入的内容空修改后的内容deleted空所删除的内容修改前的内容
此文档下载收益归作者所有