SQL菜鸟入门级教程之触发器
作者:网络转载 发布时间:[ 2013/2/6 9:33:23 ] 推荐标签:
Instead Of 触发器的工作原理:
Instead Of触发器与After触发器不同。After触发器是在Insert、Update和Delete操作完成后才激活的,而Instead Of触发器,是在这些操作进行之前激活了,并且不再去执行原来的SQL操作,而是用触发器本身的SQL语句代替原来的语句去执行。
还拿上面那个例子来说,删除一条产品记录的时候,用Instead Of将删除操作替换成查询该产品的库存。数据库的操作如下:
1、接收SQL语句,但不执行,而是跳转到Instead Of后面的SQL语句
2、根据传入的产品ID,将该产品的库存取出,完成操作。
说了那么多理论上的东西,下面让我们看看触发器的代码到底怎么写:
下面的一段代码是触发器的一个框架。
CREATE TRIGGER Trigger_Name --触发器名,在一个数据库中触发器名是的。
ON Table_Name | View_Name --触发器所在的表或者视图。
AFTER(FOR)|Instead Of INSERT,DELETE,UPDATE --定义成AFTER或Instead Of类型的触发器。
--AFTER跟FOR相同,不可在视图上定义AFTER触发器
-- 后面是触发器被触发的条件,少有一个,可以邮多个。如果有多个用逗号分开,顺序无要求。
AS --触发器要执行的操作
BEGIN
--BEGIN跟END组成一个代码块,可以写也可以不写,如果触发器中执行的SQL语句比较复杂,用BEGIN和END会让代码更加整齐,更容易理解。
END
GO --GO代表结操作完毕
注意事项:
1、After触发器只能用于数据表不能用于视图;Instead Of触发器两者皆可,设置为With Check Option的视图也不允许建立Instead Of触发器。两种触发器都不可以建立在临时表上。
2、一个数据表可以有多个触发器,但是一个触发器只能对应一个表。
3、在同一个数据表中,对每个操作(如Insert、Update、Delete)而言可以建立许多个After触发器,而Instead Of触发器针对每个操作只有建立一个。
4、如果针对某个操作即设置了After触发器又设置了Instead Of触发器,那么Instead of触发器一定会激活,而After触发器不一定会激活。
5、不同的SQL语句,可以触发同一个触发器,如Insert和Update语句都可以激活同一个触发器。
6、触发器名在所在的数据库里必须是的。由于触发器是建立中数据表或视图中的,所以有很多人都以为只要是在不同的数据表中,触发器的名称可以相同,其实触发器的全名(Server.Database.Owner.TriggerName)是必须 的,这与触发器在哪个数据表或视图无关。
7、关键字AFTER可以用For来代取,它们的意思都是一样的,代表只有在数据表的操作都已正确完成后才会激活的触发器。
关于触发器简单介绍到这里,有什么不足还请各位不吝赐教!
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11