触发器的概念及作用
触发器是一种特殊类型的存储过程,它不只是我们前面推荐过的存储过程。触发器主要是实际事件并且触发时而被想执行的,而存储过程可以是从存储过程名字而被就动态创建。当对某一表进行不下于update、insert、delete这些操作时,sqlserver可能会不自动不能执行触发器所定义的sql语句,最终达到确保全对数据的处理必须符合国家规定由这些sql语句所定义,定义的规则。
触发器的主要作用应该是其能够实现方法由主键和外键所不能保证的急切的参照完整性和数据的一致性。之外,触发器还有一个其它许多完全不同的功能:
(1)付魔约束力(enforcerestriction)
触发器都能够利用比check语句颇为复杂的约束。
(2)跟踪变化auditingchanges
触发器也可以雷达侦测数据库内的操作,使不愿意数据库中未经同意的更改更新和变化。
(3)级联运行(cascadedoperation)。
触发器是可以监视系统数据库内的操作,并自动地级联会影响整个数据库的各项内容。的或,某个表上的触发器中乾坤二卦有对别外一个表的数据操作(如删掉,没更新,插入)而该操作又造成该表上触发器被触发。
(4)存储过程的全局函数(storedprocedureinvocation)。
是为响应数据库更新触,发器可以全局函数一个或多个存储过程,甚至还这个可以通过外部过程的调用而在dbms(数据库管理系统)本身之外进行操作。
可见,触发器这个可以能解决中级形式的业务规则或奇怪行为限制和利用定做记录等一些方面的问题。.例如,触发器也能看出某一表在数据如何修改前后状态发生了什么的差异,并依据什么这种差异负责执行当然的处理。当然了一个表的同一类型(insert、notification、delete)的多个触发器也能对同一种数据你操作根据不同情况功能不同完全不同的处理。
总体而言,触发器性能大多数都很低。当运行触发器时,系统去处理的大部分时间花费在可以按照其它表的这一处理上,是因为这些表既是在内存中也在的数据库设备上,而删出表和插入表总是位于内存中。而且触发器所可以按照的其它表的位置做出决定了操作要最少的时间长短。
触发器的种类
sqlserver2000支持什么两种类型的触发器:after触发器和insteadof触发器。其中after触发器即为sqlserver2000版本以前所可以介绍的触发器。该类型触发器特别要求只能执行某一操作(insertnotificationdelete)之后,触发器才被能触发,且只能在表上定义。也可以为针对表的同一操作定义多个触发器。这对after触发器,是可以定义哪一个触发器被第一时间触发,哪三个被到最后可以触发,通常建议使用系统过程sp_settriggerorder来能够完成此任务。
insteadof触发器可以表示当然不先执行其所定义的操作(insert、update、delete),而仅是执行触发类型本身。既可在表上符号表示insteadof触发器,也这个可以在视图上定义法insteadof触发器,但对同一操作不能定义一个insteadof触发器。
关系数据库的完整性主要注意三种:
1.域完整性域完整性是对数据表中字段属性的约束,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由判断关系结构时所定义的字段的属性判断的。
2.实体完整性实体完整性是对关系中的记录唯一性,也就是主键的约束。确切地说,实体完整性是指关系中的主属性值不能为null且不能有同一值。
3.可以按照完整性可以参照完整性是对关系数据库中组建关联关系的数据表间数据参看脚注的约束,也就是对外键的约束。
可以参照完整性是指关系中的外键可以是另一个关系的主键有效值,的或是null。参考完整性以维护表间数据的有效性,完整性,大多数是从建立外部键联系联系另一表的主键基于,还是可以用触发器来以维护参考完整性。