[SQL]触发器入门介绍——特殊的存储过程,sql触发器
触发器是一种特殊类型的存储过程,它的功能是在指定的表中的数据发生变化时自动生效。
触发器与普通存储过程的不同之处在于——触发器的执行时由事件触发,而普通存储过程是由命令调用执行(EXEC)
SQL Server主要提供了一下两种触发器
1)DML触发器
2)DLL触发器
当数据库中发生数据操作语言DML事件的时候即执行DML触发器。DLL触发器是SQL Server 2005以后新增的触发器类型,它在响应数据定义语言DDL时触发。
主要讲解DML触发器,又分为三种:
1)AFTER触发器,故名思义,为修改数据时触发的
2)INSTEAD of触发器 执行INSTEAD OF触发器代替通常的触发动作。
3)CLR触发器,他就是万金油,到处都算他的,AFTER 、INSTEAD OF,甚至有一些DLL触发器也算在他里面了,设计者当初为啥这样设计就不得而知了。
下图是INSTEAD OF触发器和AFTER触发器的功能比较
视图的优点:
提高数据安全性,可以不让用户看到表中的某个字段。比如password,你只给他们执行视图的权限,不给执行表的权限,他们就无法查看全部数据。
还有可以建立一个视图,内容包括两个表,更新的时候只需要指定ID,而不用管它来自哪个表,对应表中的数据就会自动更新。
存储过程的优点:
包括视图的所有优点,还可以让不懂数据库的人也能也用数据库,还有就是方便程序计设,比如我负责前台程序设计,你负责写存程,我不用管你是怎么写,最后只接调用,我们分工明确,我也不需要懂你所懂的,这为用不懂语言和不同专业的人在一起合作提供了良好的平台。提高开发效率。
触发器的优点:
保证数据的正确性和逻辑,比如订单表中新增一条数据,对应在库存表中会减少一个产品一样。
还有保证数据的安全性,比如当用户删除表A,我们可以判断他是否为Admin组的用户,如果不是,就会给出错误的提示,并将事务回滚。
我知道的就这么多了。。。嘿嘿。
楼上的二位都是高人,指点的太简单!