触发器背景
有些时候,您可能不想通过直接调用的方式来执行函数,例如一个应用可能已经使用对象存储(Object Storage Service,简称OSS)来存放用户上传的图片,可以实现一个函数去下载图片进行处理,并将结果存入 OSS 或者其他服务。如果 OSS 能够帮助我们关注新上传的图片,并且自动的去调用执行相应函数,您就不需要再去自己调用函数了,从而简化了开发和使用流程。OSS 是如何知道关注这些事件并且调用函数计算的函数呢?这就是本文要介绍的触发器(Trigger)的作用。
函数计算提供了一种事件驱动的计算模型。函数的执行是由事件驱动的,函数的执行可以由控制台或 fcli 或 SDK 触发,也可以由其它一些事件源来触发。函数计算触发器描述了一组规则,当某个事件满足这些规则,事件源就会触发相应的函数。
触发器定义:
触发器是触发函数执行的方式。在事件驱动的计算模型中,事件源是事件的生产者,函数是事件的处理者,而触发器提供了一种集中的和统一的方式来管理不同的事件源。在事件源中,当事件发生时,如果满足触发器定义的规则,事件源则调用触发器所对应的函数。我的理解就是:触发器是一种特殊类型的存储过程,它在指定的表中的数据发生变化时自动生效。
触发器分类:
- DML( 数据操纵语言 Data Manipulation Language)触发器:是指触发器在数据库中发生DML事件时将启用。DML事件即指在表或视图中修改数据的insert、update、delete语句。a、在SQL SERVER 2008中,DML触发器的实现使用两个逻辑表DELETED和INSERTED。这两个表是建立在数据库服务器的内存中,我们只有只读的权限。DELETED和INSERED表的结构和触发器所在的数据表的结构是一样的。当触发器执行完成后,它们也就会被自动删除:INSERED表用于存放你在操件insert、update、delete语句后,更新的记录。比如你插入一条数据,那么就会把这条记录插入到INSERTED表:DELETED表用于存放你在操作 insert、update、delete语句前,你创建触发器表中数据库。b、触发器可通过数据库中的相关表实现级联更改,可以强制比用CHECK约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列,例如触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作。触发器也可以根据数据修改前后的表状态,再行采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。c、与此同时,虽然触发器功能强大,轻松可靠地实现许多复杂的功能,为什么又要慎用?过多触发器会造成数据库及应用程序的维护困难,同时对触发器过分的依赖,势必影响数据库的结构,同时增加了维护的复杂程序。
- DDL(数据定义语言 Data Definition Language)触发器:是指当服务器或数据库中发生(DDL事件时将启用。DDL事件即指在表或索引中的create、alter、drop语句也。
- 登陆触发器:是指当用户登录SQL SERVER实例建立会话时触发(不支持SQL Server 2000 )。
触发器建立的步骤
1、打开SQL server,打开效果如图:
2、打开你的数据库-选择相对应的表-------鼠标右击触发器选择新建触发器--------触发器界面如图
3、点击执行----刷新----会有有一个触发器的表
触发器的实例