SQL Server数据库技术(71)[MSSQL防范]
本文“SQL Server数据库技术(71)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在上面几节我们介绍了普通意义的存储历程,即用户自定义的存储历程和系统存储历程.本节将介绍一种特别的存储历程,即触发器.在余下各节中我们将对触发器的概念、作用以及对其的利用办法作细致介绍,使读者理解若何定义触发器,成立和利用各种差别复杂程度的触发器.
12.5.1 触发器的概念及作用
触发器是一种特别范例的存储历程,它差别于我们前面介绍过的存储历程.触发器主如果通过事件举行触发而被履行的,而存储历程可以通过存储历程名字而被直接调用.当对某一表举行诸如UPDATE、 INSERT、 DELETE 这些操作时,sql server 就会自动履行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的法则.
触发器的主要作用就是其可以实现由主键和外键所不能保证的复杂的参照完好性和数据的一致性.除此之外,触发器还有别的很多差别的功效:
(1) 强化约束(Enforce restriction)
触发器可以实现比CHECK 语句更为复杂的约束.
(2) 跟踪改变Auditing changes
触发器可以侦测数据库内的操作,从而不答应数据库中未经答应的指定更新和改变.
触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容.比方,某个表上的触发器中包含有对别的一个表的数据操作(如删除,更新,插入)而该操作又招致该表上触发器被触发.
(4) 存储历程的调用(Stored procedure invocation).
为了呼应数据库更新触,发器可以调用一个或多个存储历程,乃至可以通过外部历程的调用而在DBMS( 数据库管理系统)本身之外举行操作.
由此可见,触发器可以办理高级情势的业务法则或复杂行为限制以及实现定制记录等一些方面的问题.比方,触发器可以找出某一表在数据改正前后状况发生的差别,并按照这种差别履行一定的处理.此外一个表的同一范例(INSERT、 UPDATE、 DELETE)的多个触发器可以对同一种数据操作采纳多种差别的处理.
总体而言,触发器性能普通对比低.当运行触发器时,系统处理的大部份时间耗费在参照别的表的这一处理上,因为这些表既不在内存中也不在数据库设备上,而删除表和插入表老是位于内存中.可见触发器所参照的别的表的位置决意了操作要耗费的时间长短.
12.5.2 触发器的种类
SQL Server 2000 支持两种范例的触发器:AFTER 触发器和INSTEAD OF 触发器.此中AFTER 触发器即为SQL Server 2000 版本从前所介绍的触发器.该范例触发器要求只有履行某一操作(INSERT UPDATE DELETE) 之后,触发器才被触发,且只能在表上定义.可认为针对表的同一操作定义多个触发器.关于AFTER 触发器,可以定义哪一个触发器被最早触发,哪一个被最后触发,普通利用系统历程sp_settriggerorder 来完成此任务.
INSTEAD OF 触发器表示并不履行其所定义的操作(INSERT、 UPDATE、 DELETE),而仅是履行触发器本身.既可在表上定义INSTEAD OF 触发器,也可以在视图上定义INSTEAD OF 触发器,但对同一操作只能定义一个INSTEAD OF 触发器.
本文地址: | 与您的QQ/BBS好友分享! |