SQL Server2005中触发器的运用
上一篇 /
下一篇 2012-06-21 10:47:39
/ 个人分类:数据库
编写过存储过程的人,再编写触发器时会发现:他们的语法、格式是非常类似的。其实触发器就是一种特殊类型的存储过程。他们都是预编译的,在程序正式编译前就由编译器进行编译,存储在服务器端。.Dqs3t3IL.^w5}#G@0 不过,触发器与一般的存储过程也有些区别。触发器主要是通过对数据库的增删改的操作,或者是一个触发动作的触发作用等事件触发而被执行;而存储过程则是通过像传递SQL语句一样,传递存储过程的名字来被程序调用,实现功能。51Testing软件测试网8va*G7zs.r
]Q
Qj-s1_a \j}0 触发器一共分为五种类型:Update触发器,Insert触发器、Delete触发器、Instead of触发器和After触发器。前三个分别是相应表上进行更新、插入、删除操作时触发。Instead of触发器在不执行插入、更新或删除操作时触发。51Testing软件测试网'j|8x^G`
8w*_r*F3jVBe3SG4i0
在触发器中存在两个虚拟表:Inserted表和Deleted表。Inserted表保存的是Insert或Update之后所影响的记录形成的
表,Deleted保存的是Delete或update之前所影响的记录形成的表。这两个表是逻辑表,这两个表是动态驻留在内存中的,当触发器工作完成,这两个表也被删除。51Testing软件测试网(M2d3nR$Yh
51Testing软件测试网q:B-b$^v~ m0OH
触发器的创建代码格式:
\MWlg7B*H0CREATE TRIGGER trigger_name --触发器的名字 ezM"s4@5x\1\ t C0ON table|view [WITH ENCRYPTION] --在哪个表上创建触发器51Testing软件测试网 D
o(l9A'r`XT;v { FOR | AFTER | INSTEAD OF } 51Testing软件测试网^:roI2`!k]"Z4G {[INSERT][,][UPDATE][,][DELETE]} --激活触发器的类型51Testing软件测试网@ i3d$g;Pr AS sql_statements […n] |
代码中关键字for、after、Insteadof分别代表不同的使用范围:
4O$~
K2\\'^%[8?z^5h0 for表示为AFTER触发器,且该类型触发器仅能在表上创建;51Testing软件测试网M;g[g,j)NL
after表示只有在执行了指定的操作INSERT、DELETE、UPDATE之后触发器才被激活,执行触发器中的SQL语句;51Testing软件测试网l"r~K}}/yK/o
instead of当为表或视图定义了针对某一操作INSERT、DELETE、UPDATE的INSTEAD OF 类型触发器,且执行了相应的操作时,尽管触发器被触发,但相应的操作并不被执行,而运行的仅是触发器SQL语句本身。
8C4a$U:hX
W:{9k0 下面说下触发器的作用: